web-dev-qa-db-ja.com

jQuery-単純な入力検証-「空」および「空ではない」

検証したい入力があります:

<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」が空の場合でも、「empty」メッセージでアラートを表示する方法はありません。したがって、基本的に、私が何をしても、最初のステートメントのみが真であり、2番目のステートメントは常に偽です。

どうしましたか?

15
Wordpressor

JQueryの:emptyセレクターは、に子要素がないという意味で空のすべての要素を選択します。テキストノード。テキストを含まないすべての入力ではありません。

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

24

あなたはこれを行うことができます

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

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

入力がfocus、つまり.blur()を失った場合、_#input_の値を確認します。

空の_== ''_の場合、アラートをトリガーします。

4
Jason Gennaro

実際には、これを行う簡単な方法があります。

if ($("#input").is('empty')) {
console.log('empty');
} else {
console.log('not empty');
}
3
Mcloide
    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'); 
        }

    });
2
Willem