PROBLEMA: Al Comparar dos input text con javascript 10<2 me da false

Iniciado por demonstrator, 9 Septiembre 2014, 07:34 AM

0 Miembros y 1 Visitante están viendo este tema.

demonstrator

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?

engel lex

#1
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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

demonstrator

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 (javascript) [Seleccionar]
document.getElementById('quty').value<=document.getElementById('stock').value && document.getElementById('quty').value!="0" && document.getElementById('quty').value!=""

codigo de funcion completa:
Código (javascript) [Seleccionar]

function add_values(){
         if(unique_check()){
   
         if(document.getElementById('edit_guid').value==""){
     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!=""){
     code=document.getElementById('item').value;
 
    quty=document.getElementById('quty').value;
    cost=document.getElementById('cost').value;
    sell=document.getElementById('sell').value;
    disc=document.getElementById('stock').value;
    total=document.getElementById('total').value;
    item=document.getElementById('guid').value;
    main_total=document.getElementById('pos_total').value;
    roll=parseInt(document.getElementById('roll_no').value);

este es el input que recibe por teclado:
Código (html4strict) [Seleccionar]
<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>

engel lex

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 (javascript) [Seleccionar]

parseInt(document.getElementById('quty').value)<=parseInt(document.getElementById('stock').value)


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 (javascript) [Seleccionar]
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 (javascript) [Seleccionar]
if($("#item").val()!="" &&
    parseInt($("#quty").val())<=parseInt($("#stock").val()) &&
    parseInt($("#quty").val())>0 &&
    $("#cost").val()!="" &&
    $("#total").val()!=""
){

)


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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

demonstrator

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 (javascript) [Seleccionar]


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

engel lex

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 ;)
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

JorgeEMX

Alguien ya había tenido un problema similar antes. Por regla, siempre cualquier valor que venga de un formulario será en String.