jQuery - простая проверка ввода - «пусто» и «не пусто» - PullRequest
15 голосов
/ 23 июля 2011

У меня есть вход, который я хочу проверить:

<input type="text" id="input" />

А вот JS:

        jQuery("#input").live('change', function() {

            if("#input:not(:empty)") {
                alert('not empty');
            }   

            else if("#input:empty") {
                alert('empty'); 
            }
        });

Даже когда "#input" пуст, нет способа отобразитьоповещение с "пустым" сообщением.Так что, в принципе, независимо от того, что я делаю, только первое утверждение верно, а второе всегда ложно.

Что не так?

Ответы [ 4 ]

24 голосов
/ 23 июля 2011

JQuery's: пустой селектор выбирает все пустые элементы на странице в том смысле, что они не имеют дочерних элементов, включая текстовые узлы , не все входы без текста.

Jquery: Как проверить, не был ли введен элемент ввода.

Вот код, украденный из вышеуказанной ветки:

$('#apply-form input').blur(function()          //whenever you click off an input element
{                   
    if( !$(this).val() ) {                      //if it is blank. 
         alert('empty');    
    }
});

Это работает, потому что пустая строка в JavaScript является «ложным значением», что в основном означает, что если вы попытаетесь использовать его как логическое значение, оно всегда будет иметь значение false. Если вы хотите, вы можете изменить условное на $(this).val() === '' для большей ясности. : D

4 голосов
/ 23 июля 2011

Вы можете сделать это

$("#input").blur(function(){
    if($(this).val() == ''){
        alert('empty'); 
    }
});

http://jsfiddle.net/jasongennaro/Y5P9k/1/

Когда вход потерял focus, то есть .blur(), затем проверьте значение #input.

Если он пуст == '', активировать предупреждение.

3 голосов
/ 08 октября 2012

На самом деле есть более простой способ сделать это, просто:

if ($("#input").is('empty')) {
console.log('empty');
} else {
console.log('not empty');
}
2 голосов
/ 23 июля 2011
    jQuery("#input").live('change', function() {
        // since we check more than once against the value, place it in a var.
        var inputvalue = $("#input").attr("value");

        // if it's value **IS NOT** ""
        if(inputvalue !== "") {
            jQuery(this).css('outline', 'solid 1px red'); 
        }   

        // else if it's value **IS** ""
        else if(inputvalue === "") {
            alert('empty'); 
        }

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