Как остановить скрипт с ложным? - PullRequest
2 голосов
/ 26 января 2012
<input type="text" id="text">
<span id="click">click</span>


$("#click").click(function(){

    if($("#text").val().length < 1){
       alert("click is empty!");
       false;
    }

    alert("ok");
})

LIVE: http://jsfiddle.net/2Be8a/

Почему в этом примере, если длина $ click == 0 у меня есть предупреждение, щелчок пуст (это хорошо) и следующее предупреждение нормально (не хорошо) - почему false не останавливает сценарий?Я знаю - я могу использовать иначе , но можно ли остановить с ложным?

Ответы [ 4 ]

8 голосов
/ 26 января 2012

Вам необходимо использовать ключевое слово return для выхода из функции.

$("#click").click(function(){

    if($("#text").val().length < 1){
       alert("click is empty!");
       return false; //Exits the function
    }

    //This will not execute if ($("#text").val().length < 1) == true
    alert("ok");
});

Дополнительная информация

  • Вы также можете проверить MDN документов на return.
  • Как предлагается в комментариях, было бы "лучше" добавить else, который возвращает true.Пример:

    $("#click").click(function(){
    
       if($("#text").val().length < 1){
           alert("click is empty!");
           return false; //Exits the function
        }
        else {
            alert("ok");
            return true; //Exits the function
        }
    });
    

По сути, в обработчике jQuery return true - это то же самое, что ничего не возвращать (jQuery не будет предпринимать никаких действий).return false эквивалентно event.stopPropagation().

Я предлагаю прочитать jQuery Events: Stop (Mis) Использование Return False , чтобы лучше понять, что происходит на самом деле, когда вы используете return false.

3 голосов
/ 26 января 2012

Попробуй так:

if($("#text").val().length < 1){
   alert("click is empty!");
   return false;
}

alert("ok");
3 голосов
/ 26 января 2012

Я почти уверен, что вам нужно использовать return false;, если вы хотите завершить функцию на этом этапе.

3 голосов
/ 26 января 2012

Вы хотите return false;:

$("#click").click(function(){

    if($("#text").val().length < 1){
       alert("click is empty!");
       return false;
    }

    alert("ok");
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...