0

重複の可能性:
jqueryの空のフィールド検証

フォームが空かどうかを検出する必要があります。必須フィールドが1つ以上あり、これが空の場合、必須フィールドを使用して、必須ではないクライアント側の検証を既に実行しました。これが空の場合、投稿ボタンはクライアント側の検証エラーを起動します。これは問題ありません。それらがすべて必須ではない場合は、値を挿入するまで投稿ボタンを無効にし、何かを書くときに投稿ボタンを有効にする必要があります。しかし、値を削除すると、フォームが空であるかどうかを検出できず、ボタンを再度無効にすることができません。

$('#form .my_field').each(function() {
    $(this).data('oldVal', $(this).val());

    $(this).bind("propertychange keyup input paste change blur", function(event) {
        if ($(this).data('oldVal') != $(this).val()) {
            $('#post_button').button({
                disabled: false
            });
        }
    });
});

このバインドを使用すると、カジュアルなフォームフィールドに書き込むときに検出できますが、すべてのフィールドがクリーンであるかどうかを確認する方法がわかりません。私は多くの道を試しましたが、それらは私を行き止まりに導きます。多分10時間のプログラミングの問題です:)私はある種のことを試しました

 if ($(this).val()=='')

、ただし、一部のフィールド(たとえば、データピッカー)が機能しない場合(複数選択が多すぎる場合があります---->:オプションが選択されています)

同じイベントを(空の場合はブールフラグを設定して)にバインドし、すべてのブールフラグをチェックして、それらがすべてtrue(またはfalse)であるかどうかを判断する必要があると思います。ヒントはありますか?

4

1 に答える 1

1

なぜ単に使用しないのelse ifですか?

デモ: http: //jsfiddle.net/dfAtX/

jQuery:

$('#form .my_field').each(function() {
    $(this).data('oldVal', $(this).val());

    $(this).bind("propertychange keyup input paste change blur", function(event) {

        if ($(this).data('oldVal') != $(this).val()) {
            $('#post_button').button({
                disabled: false
            });
        }
        else if ($(this).val() == $(this).data('oldVal')) { // Don't even bother checking the rest if this doesn't match
            var unchanged = 0;
            $('#form .my_field').each(function() {
                if ($(this).val() == $(this).data('oldVal')) {
                    unchanged++;
                }
            });

            if (unchanged == $('#form .my_field').length) {
                $('#post_button').button({
                    disabled: true
                });
            }
        }
    });
});​
于 2012-10-30T18:24:36.963 に答える