web-dev-qa-db-fra.com

Si/sinon sinon si dans Jquery pour une condition

J'ai un ensemble de champs de texte où je suis en train de valider Dites que j'ai un champ appelé "sièges", cela peut accepter Valeur inférieure à "99999" .Sens je ne devrais pas pouvoir entrer le. "99999" tout ce qui est moins que ça va. Pour cela, j’écris ci-dessous si et d’autre si… .. s'il vous plaît, dites-moi si je fais quelque chose de mal. Je suis très confus du matin Si cela devrait être inférieur ou supérieur à 

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

Je suis un peu confus du matin pour savoir s'il devrait être inférieur ou supérieur à

cela peut accepter la valeur inférieure à "99999"

Je pense que vous y avez répondu vous-même ... Mais c'est valide quand c'est inférieur à. Ainsi, ce qui suit est incorrect:

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

Vous dites que si inférieur à 99999, il s'agit de not valid. Vous voulez faire le contraire:

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

De plus, puisque vous avez $("#seats") deux fois, jQuery doit rechercher deux fois dans le DOM. Vous devriez vraiment stocker la valeur, ou au moins l’élément DOM dans une variable. Et un peu plus de votre code n'a pas beaucoup de sens, alors je vais faire quelques hypothèses et les mettre ensemble:

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;

Voici un exemple de travail: http://jsfiddle.net/LUY8q/

14
Nelson Rothermel

Un peu plus de choses en plus des réponses existantes. Regardez ça:

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");
}

Le nom de la variable setFlag est très générique, si vous ne l’utilisez que conjointement avec le nombre de sièges, vous devez le renommer (je l’ai appelée siègesValid). Je l'ai également initialisé à true, ce qui supprime la nécessité de la dernière chose dans votre code d'origine. Ensuite, je mets le sélecteur et appelle à .val () dans une variable. Il est recommandé de mettre en cache vos sélecteurs afin que jquery n'ait pas besoin de traverser le DOM plus que nécessaire. Enfin, lorsque vous comparez deux valeurs, vous devez vous assurer qu'elles sont du même type. Dans ce cas, seatsVal est une chaîne. Par conséquent, pour pouvoir la comparer correctement à 99999, vous devez utiliser parseInt ().

1
Zevan
If statement for images in jquery:
#html

<button id="chain">Chain</button>
<img src="bulb_on.jpg" alt="img" id="img"/>

#script
    <script>
        $(document).ready(function(){
            $("#chain").click(function(){
            if($("#img").attr('src')!='bulb_on.jpg'){
                $("#img").attr('src', 'bulb_on.jpg');
            }
            else
            {
                $("#img").attr('src', 'bulb_onn.jpg');
            }
            });
        });
    </script>
0
Detroit Charan

Remplacez l'opérateur inférieur par un opérateur supérieur ou égal à:

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

Voir cette réponse . val () compare un string, pas un valeur numérique.

0
bdl