Foros del Web » Programando para Internet » Javascript »

Funcion no genera varios codigos de barra

Estas en el tema de Funcion no genera varios codigos de barra en el foro de Javascript en Foros del Web. Buenas tardes, estoy un poco desesperado porque ya intente varias cosas y no logro conseguir que me imprima N codigos de barra, solamente me imprime ...
  #1 (permalink)  
Antiguo 23/10/2012, 13:22
 
Fecha de Ingreso: diciembre-2011
Ubicación: México
Mensajes: 26
Antigüedad: 13 años
Puntos: 0
Pregunta Funcion no genera varios codigos de barra

Buenas tardes, estoy un poco desesperado porque ya intente varias cosas y no logro conseguir que me imprima N codigos de barra, solamente me imprime o el primero si dejo la funcion fuera del for o el ultimo si dejo la funcion dentro del for, les dejo el código por si alguien me puede hechar la mano, para averiguar que estoy haciendo mal, gracias.

Código:
<?php
            for($co=1; $co<=$totalc; $co++)
		     {
			?>
<script type="application/javascript">
			var num= <?php echo $co;?>;

			self.onload = function()
			  {
				  function generateBarcode(){
        var value = "<?php echo $controlnum;?>";
        var btype = "code128";
        var renderer = "css";
        
		var quietZone = false;
        if ($("#quietzone").is(':checked') || $("#quietzone").attr('checked')){
          quietZone = true;
        }
		
        var settings = {
          output:renderer,
          bgColor: "#FFFFFF",
          color: "#000000",
          barWidth: "1",
          barHeight: "30",
          moduleSize: "5",
          posX: "10",
          posY: "20",
          addQuietZone: "1"
        };
        if ($("#rectangular").is(':checked') || $("#rectangular").attr('checked')){
          value = {code:value, rect: true};
        }
        if (renderer == 'canvas'){
          clearCanvas();
          $("#barcodeTarget"+num+"").hide();
          $("#canvasTarget"+num+"").show().barcode(value, btype, settings);
        } else {
          $("#canvasTarget"+num+"").hide();
          $("#barcodeTarget"+num+"").html("").show().barcode(value, btype, settings);
        }
      }
          
      function showConfig1D(){
        $('.config .barcode1D').show();
        $('.config .barcode2D').hide();
      }
      
      function showConfig2D(){
        $('.config .barcode1D').hide();
        $('.config .barcode2D').show();
      }
      
      function clearCanvas(){
        var canvas = $('#canvasTarget'+num+'').get(0);
        var ctx = canvas.getContext('2d');
        ctx.lineWidth = 1;
        ctx.lineCap = 'butt';
        ctx.fillStyle = '#FFFFFF';
        ctx.strokeStyle  = '#000000';
        ctx.clearRect (0, 0, canvas.width, canvas.height);
        ctx.strokeRect (0, 0, canvas.width, canvas.height);
      }
      
      $(function(){
        $('input[name=btype]').click(function(){
          if ($(this).attr('id') == 'datamatrix') showConfig2D(); else showConfig1D();
        });
        $('input[name=renderer]').click(function(){
          if ($(this).attr('id') == 'canvas') $('#miscCanvas').show(); else $('#miscCanvas').hide();
        });
        generateBarcode();
      });
			  }

			</script>
<?php } ?>
Gracias anticipadas a todos.

Nota: debo añadir que el resultado es la impresión de una imagen de codigo de barra que quiero se repita, ya que genero n etiquetas con diferentes datos a excepcion del codigo de barras que es el mismo, pero solo me lo genera una vez.

Este codigo lo coloca en un div con id #cavasTarget(numero que le toque)
  #2 (permalink)  
Antiguo 23/10/2012, 13:33
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 11 meses
Puntos: 206
Respuesta: Funcion no genera varios codigos de barra

No tengo ni idea de códigos de barra.

Haz en el http://jsfiddle.net/ tu código que funcione (y falle) sustituyendo los ECHO de php por valores reales de algún producto en concreto, dale a SAVE y pega aquí el enlace.
  #3 (permalink)  
Antiguo 23/10/2012, 14:53
 
Fecha de Ingreso: diciembre-2011
Ubicación: México
Mensajes: 26
Antigüedad: 13 años
Puntos: 0
Respuesta: Funcion no genera varios codigos de barra

Gracias marlanga lo probare y lo posteo,

Creo que el problema es que solamente llama una vez a la funcion en javascript que es la que me genera el codigo de barras, ya que la tengo con un evento, self.onload, no se como hacerle para que se llame 3 veces, pero pruebo lo de marlanga y lo pego aquí, saludos.

Ya lo coloque en la pagina que me señalaste marlanga pero sin ningun resultado, talves lo estoy haciendo mal, de igual forma dejo el código de nuevo simplificado, para ver si alguien me puede hechar una mano, saludos.

Código:
<?php
  for($co=1; $co<=2; $co++)
   {
?>
    <script type="application/javascript">
     var num= 1; // primer pase 1

     self.onload = function generateBarcode(){
        var value = "SD-1-000000001";
        var btype = "code128";
        var renderer = "css";   
        
        var settings = {
          output:renderer,
          bgColor: "#FFFFFF",
          color: "#000000",
          barWidth: "1",
          barHeight: "30",
          moduleSize: "5",
          posX: "10",
          posY: "20",
          addQuietZone: "1"
        };

        $("#barcodeTarget1").html("").show().barcode(value, btype, settings);  // en el primer paso el id es barcodeTarget1
        
      }
            </script>
            <div class="contienetiquetas">
             <div id="barcodeTarget1" class="barcodeTarget"></div>
                // este es el div del primer pase en donde deberia imprimir el primer codigo, despues genera una segundo div por el for con el id igual pero con numero 2, ahi es el problema solo me genera el codigo de barras del segundo id
            </div>
           <?php
             }
           ?>

Última edición por canoj; 23/10/2012 a las 15:58

Etiquetas: barra, codigos, funcion, genera, html, input, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:28.