If / else если в Jquery для условия

У меня есть набор текстовых полей, где я делаю проверку Скажем, у меня есть поле под названием "места", которое может принять значение меньше, чем "99999".Это значит, что я не смогу войти в "99999" любая вещь меньше, чем это нормально. Для этого я написал ниже if и else if . пожалуйста, скажите мне, делаю ли я что-нибудь неправильно. Я сильно запутался с утра. должно ли оно быть меньше или больше

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

5 ответов


Я очень запутался с утра, должно ли это быть меньше или больше, чем"

это может принимать значение меньше "99999"

Я думаю, вы сами ответили на него... Но это действительный когда он меньше. При этом неверно следующее:

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

вы говорите, если это меньше 99999, тогда это не действительным. Вы хотите сделать напротив:

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

кроме того, так как у вас есть $("#seats") дважды, jQuery должен дважды искать DOM. Вы действительно должны хранить значение или, по крайней мере, элемент DOM в переменной. И еще немного вашего кода не имеет большого смысла, поэтому я собираюсь сделать некоторые предположения и собрать все вместе:

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;

вот рабочий образец:http://jsfiddle.net/LUY8q/


еще несколько вещей в дополнение к уже существующим ответам. Взгляните на это:

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

имя переменной setFlag очень общее, если вы используете его только в сочетании с количеством мест, которые вы должны переименовать (я назвал его seatsValid). Я также инициализировал его в true, который избавляется от необходимости окончательного еще в исходном коде. Затем я включаю селектор и вызываю .val () в переменной. Это хорошая практика для кэширования ваших селекторов, поэтому jquery не нужно пересеките DOM больше, чем нужно. Наконец, при сравнении двух значений вы должны попытаться убедиться, что они одного типа, в этом случае seatsVal является строкой, поэтому, чтобы правильно сравнить его с 99999, вы должны использовать parseInt() на нем.


изменить оператор "меньше" на "больше" -или-равный-оператор:

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

посмотреть ответ. val () сравнивает a строка, а не числовое значение.


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>