Если / еще, если в Jquery для условия - PullRequest
7 голосов
/ 23 декабря 2010

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

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

Ответы [ 5 ]

14 голосов
/ 23 декабря 2010

Я с утра сильно путаюсь, должно ли оно быть меньше или больше `

это может принимать значение меньше"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/

1 голос
/ 23 декабря 2010

Еще несколько вещей в дополнение к существующим ответам. Посмотрите на это:

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 очень общее, если вы используете его только в сочетании с количеством мест, вы должны переименовать его (я назвал его seatValid). Я также инициализировал его как true, что избавляет от необходимости финального кода в вашем исходном коде. Затем я помещаю селектор и вызываю .val () в переменной. Хорошей практикой является кэширование ваших селекторов, чтобы jquery не нуждался в обходе DOM больше, чем нужно. Наконец, сравнивая два значения, вы должны убедиться, что они одного типа, в этом случае seatVal - это строка, поэтому для правильного сравнения с 99999 вы должны использовать parseInt ().

0 голосов
/ 20 июня 2018
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 голосов
/ 23 декабря 2010

См. этот ответ . val () сравнивает строку , а не числовое значение .

0 голосов
/ 23 декабря 2010

Измените оператор меньше чем на оператор больше или равен:

}elseif($("#seats").val() >= 99999){
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...