2010-12-23 16 views
5

Estoy teniendo un conjunto de campos de texto donde estoy haciendo la validación Digamos que estoy teniendo un campo llamado "asientos" esto puede aceptar valor menor que "99999" .Significación I no debería poder ingresar al "99999" cualquier cosa inferior a eso está bien. Para eso escribí a continuación si y si. por favor dígame si estoy haciendo algo mal. Estoy confundido mucho de la mañana si debe ser menor o mayor queIf/else else si en Jquery para una condición

if ($("#seats").val() != '') { 
    setflag = false; 
    alert("Not a valid character") 
} 
else if($("#seats").val() < 99999) { 
    alert("Not a valid Number"); 
} else { 
    setflag = true; 
} 

Respuesta

10

Iam se confunde mucho desde la mañana si debe ser menor o mayor than`

esto puede aceptar el valor menos de "99999"

creo que su respuesta es sí mismo ... pero es válida cuando es menos que. Así, el siguiente es incorrecto:

}elseif($("#seats").val() < 99999){ 
    alert("Not a valid Number"); 
}else{ 

Usted está diciendo si es menos de 99999, entonces es no válida. Usted querrá hacer lo contrario:

}elseif($("#seats").val() >= 99999){ 
    alert("Not a valid Number"); 
}else{ 

También, puesto que usted tiene $("#seats") dos veces, jQuery tiene que buscar el DOM dos veces. Realmente debería almacenar el valor, o al menos el elemento DOM en una variable. Y un poco más de su código no tiene mucho sentido, por lo que voy a hacer algunas suposiciones y poner todo junto:

var seats = $("#seats").val(); 

var error = null; 

if (seats == "") { 
    error = "Number is required"; 
} else { 
    var seatsNum = parseInt(seats); 

    if (isNaN(seatsNum)) { 
     error = "Not a valid number"; 
    } else if (seatsNum >= 99999) { 
     error = "Number must be less than 99999"; 
    } 
} 

if (error != null) { 
    alert(error); 
} else { 
    alert("Valid number"); 
} 

// If you really need setflag: 
var setflag = error != null; 

He aquí una muestra de trabajo: http://jsfiddle.net/LUY8q/

+0

Entonces, ¿cuál debería considerar mayor o menor que – Someone

0

Cambiar el menos-que operador a un mayor que o igual a operador:

}elseif($("#seats").val() >= 99999){ 
0

Ver this answer. val() está comparando una cadena , no un valor numérico .

1

Algunas cosas más además de las respuestas existentes. Echar un vistazo a esto:

var seatsValid = true; 
// cache the selector 
var seatsVal = $("#seats").val(); 
if(seatsVal!=''){ 
    seatsValid = false; 
    alert("Not a valid character") 
    // convert seatsVal to an integer for comparison 
}else if(parseInt(seatsVal) < 99999){ 
    seatsValid = false; 
    alert("Not a valid Number"); 
} 

El nombre setflag variable es muy genérico, si su única usarlo en conjunto con el número de asientos que debe cambiar su nombre (I llamado seatsValid). También lo inicialicé en true, que elimina la necesidad del último elemento en tu código original. A continuación, pongo el selector y llamo a .val() en una variable. Es una buena práctica almacenar en caché sus selectores, por lo que jquery no necesita atravesar el DOM más de lo necesario. Por último, al comparar dos valores debe intentar asegurarse de que son del mismo tipo, en este caso, seatsVal es una cadena, por lo que para compararlo correctamente con 99999, debe usar parseInt() en él.

Cuestiones relacionadas