Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: demonstrator en 9 Septiembre 2014, 07:34 am



Título: PROBLEMA: Al Comparar dos input text con javascript 10<2 me da false
Publicado por: demonstrator en 9 Septiembre 2014, 07:34 am
Saludos colegas tengo una duda: Por que cuando comparo de input text uno que me muestra un valor numerico de una cosulta a una tabla y otro que me recibe  un numero por teclado al hacer la comparacion de por ejemplo

10  <  2 me da false!! 

el numero 10 es el valor de recibo de la consulta a la base de datos y el 2 es el numero que yo ingreso por teclado

ya he hecho pruebas y encontre que si en cambio en el input text de teclado ingreso el mismo numero pero de la siguiente manera si hace correctamente la comparacion

10  <  02 de esta forma si da true!! alguien podria comentar que puede estar sucediendo? y como podria resolverlo?


Título: Re: PROBLEMA: Al Comparar dos input text con javascript 10<2 me da false
Publicado por: engel lex en 9 Septiembre 2014, 07:42 am
que tal si empiezas por el codigo :P

usa las etiquetas GeSHi... y creo que tengo idea de cual es tu problema, pero ver el código lo confirmará o no


Título: Re: PROBLEMA: Al Comparar dos input text con javascript 10<2 me da false
Publicado por: demonstrator en 9 Septiembre 2014, 08:17 am
Este es el codigo javascript donde hago la recoleccion de diversos datos de otros inputs entre ellos el del valor "quty" el cual quiero comparar o verificar que sea menor o igual que otro campo que obtengo por una consulta el cual se llama "stock"
en esta parte:
Código
  1. document.getElementById('quty').value<=document.getElementById('stock').value && document.getElementById('quty').value!="0" && document.getElementById('quty').value!=""


codigo de funcion completa:
Código
  1. function add_values(){
  2.         if(unique_check()){
  3.  
  4.         if(document.getElementById('edit_guid').value==""){
  5.     if(document.getElementById('item').value!="" && document.getElementById('quty').value<=document.getElementById('stock').value && document.getElementById('quty').value!="0" && document.getElementById('quty').value!="" && document.getElementById('cost').value!="" && document.getElementById('total').value!=""){
  6.     code=document.getElementById('item').value;
  7.  
  8.    quty=document.getElementById('quty').value;
  9.    cost=document.getElementById('cost').value;
  10.    sell=document.getElementById('sell').value;
  11.    disc=document.getElementById('stock').value;
  12.    total=document.getElementById('total').value;
  13.    item=document.getElementById('guid').value;
  14.    main_total=document.getElementById('pos_total').value;
  15.    roll=parseInt(document.getElementById('roll_no').value);
este es el input que recibe por teclado:
Código
  1. <td><input name=""  type="text" id="quty"  maxlength="200"   class="round default-width-input my_with" onKeyPress="quantity_chnage(event);return numbersonly(event);" onkeyup="total_amount();unique_check()"    /></td>


Título: Re: PROBLEMA: Al Comparar dos input text con javascript 10<2 me da false
Publicado por: engel lex en 9 Septiembre 2014, 08:31 am
si, era lo que creía... el asunto es que cuando lees los "value" te lo traes en formato string


es decir el está comparando palabras... para corregir eso usa parseInt



Código
  1. parseInt(document.getElementById('quty').value)<=parseInt(document.getElementById('stock').value)
  2.  

eso lo que hará es convertirlos a valores enteros y ahí si la comparación numérica es valida...

te recomiendo aprender jQuery.... resumiría un poco tu codigo y es mucho más facil de manejar basicamente

Código
  1. if(document.getElementById('item').value!="" && document.getElementById('quty').value<=document.getElementById('stock').value && document.getElementById('quty').value!="0" && document.getElementById('quty').value!="" && document.getElementById('cost').value!="" && document.getElementById('total').value!="")

quedaría

Código
  1. if($("#item").val()!="" &&
  2.    parseInt($("#quty").val())<=parseInt($("#stock").val()) &&
  3.    parseInt($("#quty").val())>0 &&
  4.    $("#cost").val()!="" &&
  5.    $("#total").val()!=""
  6. ){
  7.  
  8. )

haciendo el codigo más visible y manejable... a demás los selectores que usa son los de css que son muy poderosos :P

aqui un tuto :P (http://www.javascriptya.com.ar/jquery/)


Título: Re: PROBLEMA: Al Comparar dos input text con javascript 10<2 me da false
Publicado por: demonstrator en 9 Septiembre 2014, 08:40 am
Ya andamos de vuelta nada mas para comentarles que ya encontre la solucion y es que me hacia falta hacerle un parseo como int al valor capturado como teclado ya que la tabla la he configurado como que acepte para el campo de la consulta valores int, con esto se ha solucionado el problema les comparto lo que agregue:

Código
  1.  
  2. parseInt(document.getElementById('quty').value)<=document.getElementById('stock')

Y es que ya habia hecho la prueba de poner el parseInt en un proceso que ocurre despues de la comparacion y observe si hacia la conversion solo que al querer agregarlo en esta parte me daba un error de sintaxis y no hallaba la razon error de dedo supongo de cualquier forma seguire haciendo pruebas a ver con detalle me encuentro pero por ahora la duda esta solucionada muchas gracias engel lex al parecer me ganaste a publicar y si al parecer estabamos en la misma sincronia y por lo del jquery te comento que soy nuevo en el mundo del desarrollo web soy ingeniero de control y automatizacion husmeando en estos nuevos horizontes espero primero conocer mas sobre javascript y php y luego pasarme a jquery


Título: Re: PROBLEMA: Al Comparar dos input text con javascript 10<2 me da false
Publicado por: engel lex en 9 Septiembre 2014, 08:44 am
no, no es pasarte, jquery es una libreria para jscript, es muy potente y resume mucho los procesos, por lo menos dale una ojeada al tutorial y mira como facilita todo ;)


Título: Re: PROBLEMA: Al Comparar dos input text con javascript 10<2 me da false
Publicado por: JorgeEMX en 10 Septiembre 2014, 05:13 am
Alguien ya había tenido un problema similar antes. Por regla, siempre cualquier valor que venga de un formulario será en String.