2

空のフォームを送信しましたが、1 つのフィールドが無効です。フォームで何かを変更して (現在の無効なフィールドではなく)、コードで無効なフィールドの検証を呼び出すよりも:

$('.myinvalidfield').valid()

このフィールドは有効であることが返されますが、検証エラー メッセージは削除されません。修正するにはどうすればよいですか?(メッセージとエラー クラスを手動で削除したくありません。設定または JQuery を使用して行うことは可能ですか?)

アップデート。

2 つのフィールドがあります。最初の要素は必須ではありません。2 番目の要素は、最初の要素が空の場合にのみ必要です。私はこのルールを使用します:

まず、必須フィールド:

    required: function (element) {
        var secondElement = $(selector);
        var value = secondElement.val();
        return value == ""; //if second (not required) field has value, that current element is not required
    },

第二に、必須フィールドではありません:

    required: function (element) {
        var secondElement = $(selector);
        if (secondElement.length == 0) return false; //becouse my forms builds dynamicly
        secondElement.valid(); //invoke validation for required field
        return false;
    }

このルールは機能しますが、空のフィールドを含むフォームを送信すると、必須フィールドで 1 つのエラーが表示されます。必須フィールドではなく最初に変更すると、すべてのフォームが有効になりますが、エラー メッセージは 2 番目の要素から消えません。

4

1 に答える 1

1

デフォルトでは、フィールドが有効になると、すべてのエラーが自動的にクリアされます。

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


編集

OPによると:

「2 つのフィールドがあります。最初の要素は不要です。2 番目の要素は、最初の要素が空の場合にのみ必要です。」

この簡易バージョンを試してみてください...

$(document).ready(function () {

    $('#myform').validate({ // initialize the plugin
        rules: {
            field2: {
                required: function () {
                    return $('#field1').is(':blank');
                }
            }
        }
    });

});

HTML :

<form id="myform">
    <input type="text" name="field1" id="field1" />
    <input type="text" name="field2" id="field2" />
    <input type="submit" />
</form>

デモ: http://jsfiddle.net/d55hj/4/


それ以外の場合は、カスタム メソッドを作成して、すべてをより正確に制御する必要があります...

$(document).ready(function () {

    jQuery.validator.addMethod('customrule', function (value, element) {
        if ($('#field1').val() === "" && $('#field2').val() === "") {
            return false;
        } else {
            $('label.error').hide();
            return true;
        }
    }, "Please fill out field #2 when field #1 is empty");


    $('#myform').validate({ // initialize the plugin
        groups: {  // use 'groups' option to combine both error messages into one
            name: "field1 field2"
        },
        rules: {
            field1: {
                customrule: true
            },
            field2: {
                customrule: true
            }
        }
    });

});

動作デモ: http://jsfiddle.net/d55hj/7/

于 2013-03-04T17:41:14.107 に答える