0

jquery を使用して、すべての入力フィールドが既に入力されているかどうかを確認しようとしています。はいの場合、フォームの周りに緑の境界線を作成したいと思います。

これが私のアプローチでした:

if($('input:text[value=""], textarea[value=""]').length == 0){
    alert("DONE");
}

value="" にカーソルを合わせると、セレクターが機能しません。

値属性には入力フィールドのデフォルト値のみが含まれているようですが、ユーザーが挿入した実際のコンテンツは含まれていないようです - firebug によると。

このコマンドは、実際の内容を警告します。

$('input:text[value!=""]').each(function(){
    alert($(this).val());
});

私の質問: 実際の入力フィールドの内容はどこに保存されていますか? また、空のフィールドがある場合、jQuery を使用して効率的にチェックするにはどうすればよいですか?

4

5 に答える 5

1

その通りです。属性セレクターは、属性が実際に持っている値でのみ機能します。後で入力の値を変更すると、DOM 要素の内部状態のみが変更されます。

実際の入力フィールドの内容はどこに保存されますか?

valueDOM 要素のプロパティを介して値にアクセスできますelementNode.value

また、空のフィールドがある場合、jQuery を使用して効率的にチェックするにはどうすればよいですか?

使用できます.filter

$('input').filter(function() {
    return !this.value;
});
于 2013-07-16T08:24:43.430 に答える
1

入力を検証する適切な方法は、スクリプトが検索して検証する要素に検証ルールをアタッチすることです。

フィールドを必須にするには:

<input type="text" data-validate="required" />

あなたのスクリプト:

$('[data-validate]').each(function() {
    var rule = $(this).attr('data-validate'), value = $(this).val();

    switch (rule) {
        case 'required':
            if (!value) {
                alert('Field invalid!');
            }
        break;
    }
});

それは私にとってかなりうまくいきます。

特定の要素タイプまたは特定の要素 (フォームなど) の子のみを選択することで、より効率的にすることができます。

于 2013-07-16T08:31:06.420 に答える
0

.filter()次のように使用してみてください。

var empty = $('input:text').filter(function(){ return $(this).val() == "" }).length;

if(empty > 0){
    alert("There are "+empty+" fields which have not been filled out");
}
于 2013-07-16T08:25:41.647 に答える
0

Jquery validate を使用したくない場合の私のアプローチ。

各入力フィールドにクラスを与えてからJquery class selector、それらがすべて入力されているかどうかをテストするために使用します。これはドロップダウンでも使用できます。

于 2013-07-16T08:26:07.897 に答える
0

この構造を使用する必要があります。

var incomplete = $('form :input').filter(function() {
  return $(this).val() == '';
});

if (incomplete) {
  alert('Please fill all fields!');
}

:inputセレクターは、input、textarea、select、および button 要素をすべて選択します。

これを読んでください:http://api.jquery.com/input-selector/

于 2013-07-16T08:28:45.407 に答える