Foros del Web » Programando para Internet » Javascript »

tomar arreglos html con indices de cadenas (ok!!)

Estas en el tema de tomar arreglos html con indices de cadenas (ok!!) en el foro de Javascript en Foros del Web. Hola a todos: Tengo el siguiente código html: Código: <td class="celdaGrilla" align="right">{$fila.SubTotal}</td> <input name="txtProdStock[{$fila.ProdCod}]" type="hidden" value="{$fila.Stock}" /> <input name="txtProdCantEmb[{$fila.ProdCod}]" type="hidden" value="{$fila.Det_EmbProdCant}" /> </td> Lo cual ...
  #1 (permalink)  
Antiguo 18/08/2008, 22:30
 
Fecha de Ingreso: enero-2007
Mensajes: 272
Antigüedad: 17 años, 11 meses
Puntos: 5
Pregunta tomar arreglos html con indices de cadenas (ok!!)

Hola a todos:

Tengo el siguiente código html:

Código:

<td class="celdaGrilla" align="right">{$fila.SubTotal}</td>
  <input name="txtProdStock[{$fila.ProdCod}]" type="hidden" value="{$fila.Stock}" />
  <input name="txtProdCantEmb[{$fila.ProdCod}]" type="hidden"       value="{$fila.Det_EmbProdCant}" />
</td>
Lo cual lo recojo desde javascript de la siguiente forma.

Código PHP:
<script language="JavaScript" type="text/javascript">
function 
stock(prodCod,obj) {
   var 
stock document.form['txtProdStock[' prodCod ']'].value;
     var 
prodCantEmb parseInt(document.form['txtProdCantEmb[' prodCod ']'].value);
     var 
cantPedida parseInt(obj.value);
     
     
stock parseInt(stock);
          
     if ((
stock cantPedida) && (cantPedida prodCantEmb)) {
            
obj.focus();
             
alert('No hay suficiente stock');
            
obj.value prodCantEmb;
            return 
false;
     }

     return 
true;
}
</script> 
El código anterior resulta bien cuando el indice del control son números mayores a 0
"txtEmbProdFactor[6777][124436]" , pero falla cuando parte con 0, ejemplo.

"txtEmbProdFactor[6777][00656]"

Agradeceré cualquier ayuda....

Gracias !!!!
  #2 (permalink)  
Antiguo 19/08/2008, 07:59
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años, 1 mes
Puntos: 45
Respuesta: tomar arreglos html con indices de cadenas

Hola lucasarts_18:

No sé si el problema es que estás tratando txtEmbProdFactor[6777][00656] de otra forma que no debes.... Te digo porque no sé a qué hace referencia una línea así. Me remito a la teoría. Utiliza cualquiera de estos métodos:

Código PHP:
document.formulario.campo
document
.formulario["campo"]
document.forms["formulario"].campo
document
.forms["formulario"]["campo"
En tu ejemplo veo
var stock = document.form['txtProdStock[' + prodCod + ']'].value;
No txtEmbProdFactor[6777][124436]

Teóricamente tu ejemplo está bien, debería funcionar. Esto sí funciona:

Código PHP:
<form name="form">
    <
input name="txtProdStock[6777]" type="text" value="24 objetos" />
    <
input name="txtProdCantEmb[00656]" type="text" value="otras cosas" />
</
form>

<
script type="text/javascript">
<!--

alertdocument.forms["form"]["txtProdCantEmb[00656]"].value );
alertdocument.form["txtProdCantEmb[00656]"].value );

// -->
</script> 
Pero siempre el nombre de campo como string si es con corchetes.

Si no lo consigues prueba a hacer un ejemplo nuevo sólo con tu formulario y un par de campos, y hacer pruebas. Si sigue sin salir postea el pequeño ejemplo para que te echemos un cable.



Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #3 (permalink)  
Antiguo 19/08/2008, 09:37
 
Fecha de Ingreso: enero-2007
Mensajes: 272
Antigüedad: 17 años, 11 meses
Puntos: 5
Respuesta: tomar arreglos html con indices de cadenas

Hola:

Darkenuke, primero que anda, gracias por responder, por favor intenta con el siguiente código.

Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<
html lang="en">
<
head>
    <
title><!-- Insert your title here --></title>
</
head>
<
body>
    <
form name="form">
    <
input name="txtProdStock[10]" type="text" value="" onchange="stock(10)" />
    
    </
form>

<
script type="text/javascript">

function 
stock (prodCod) {
  
alert (document.form['txtProdStock[' prodCod ']'].value);

}

</script>
</body>
</html> 
Este ejemplo funciona de maravilla, pero cambiale el código 10 por 0001 y dejará de funcionar por completo.

y yo necesito de eso, ya que hay código de productos que tienen código como 0005458, 033365, 002154, etc, etc...

cuando son número de este tipo firefox (consola de error) me dice lo siguiente:

Error: document.form["txtProdStock[" + prodCod + "]"] is undefined
Archivo de origen: file:///C:/Documents%20and%20Settings/desarrollo/Escritorio/prueba666.html?txtProdStock%5B10%5D=5
Línea: 15


eso, ahí falla por completo , cuando el indice parte con número 0.

Gracias....
  #4 (permalink)  
Antiguo 19/08/2008, 09:49
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 8 meses
Puntos: 839
Exclamación Respuesta: tomar arreglos html con indices de cadenas

Yo lo probé y funciona sin problemas, solo que hay que pasarle el índice como texto y no como número porque de lo contrario no va a funcionar.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 19/08/2008, 10:00
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años, 1 mes
Puntos: 45
Respuesta: tomar arreglos html con indices de cadenas

Cita:
Iniciado por David el Grande Ver Mensaje
Yo lo probé y funciona sin problemas, solo que hay que pasarle el índice como texto y no como número porque de lo contrario no va a funcionar.
Exacto, el problema está en los números. Hay que tratarlo siempre como cadena, fíjate en lo que te dije:
Cita:
Iniciado por derkenuke Ver Mensaje
Pero siempre el nombre de campo como string si es con corchetes.
Si pruebas un alert(0010) verás que te alerta un 8, y esto es porque javascript toma el número como octal si empieza por 0: El 10 (uno-cero) en octal es 8^1+8^0 = 8.

En cambio si es string no hace ningún cambio. No tendrás manera de escribir 0010 como un número decimal y que javascript entienda "10".


Saludos.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #6 (permalink)  
Antiguo 19/08/2008, 12:44
 
Fecha de Ingreso: enero-2007
Mensajes: 272
Antigüedad: 17 años, 11 meses
Puntos: 5
Respuesta: tomar arreglos html con indices de cadenas

Compañeros, no me funciona y ahora se lo mando como string....

Código:
<form name="form">
    <input name="txtProdStock['0001']" type="text" value="" onchange="stock('0001')" />
    
    </form>
Saludos .-
  #7 (permalink)  
Antiguo 19/08/2008, 12:46
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 8 meses
Puntos: 839
Exclamación Respuesta: tomar arreglos html con indices de cadenas

No, al definir el name no necesitas ponerlo entre comillas. Lo única que realmente tendrías que cambiar es al momento de llamar a la función, ahí sí, ponerlo entre comillas. Pruébalo y nos cuentas.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 19/08/2008, 13:10
 
Fecha de Ingreso: enero-2007
Mensajes: 272
Antigüedad: 17 años, 11 meses
Puntos: 5
De acuerdo Respuesta: tomar arreglos html con indices de cadenas

Cita:
Iniciado por David el Grande Ver Mensaje
No, al definir el name no necesitas ponerlo entre comillas. Lo única que realmente tendrías que cambiar es al momento de llamar a la función, ahí sí, ponerlo entre comillas. Pruébalo y nos cuentas.
Excelente, funciona !!!!!

Gracias....
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 05:09.