0

ASP MVC3 を使用したフォームがあり、inputフィールドは jQuery 検証プラグイン v1.8 (MVC3 によるデフォルトの jQuery 検証) で検証されます。これは完全に機能していますが、問題は、afterまたはappend関数を使用して検証する新しいフィールドを挿入するときです。

この HTML がある場合:

<label for="name">Name: </label>
<input class="text-files" data-val="true" data-val-required="Name missing" id="name" name="name" type="text" value="">
<span class="field-validation-error" data-valmsg-for="name" data-valmsg-replace="true"></span>

after問題なく動作しますが、 or関数で挿入するとinsert動作しません:

$(window).load(function () {
    $('#addName').click(function (event) {
        event.preventDefault();
        var $newdiv = $('<label for="name">Name: </label><input class="text-files" data-val="true" data-val-required="Name missing" id="name" name="name" type="text" value=""><span class="field-validation-error" data-valmsg-for="name" data-valmsg-replace="true"></span>');

        $('.names').append($newdiv);
    });
});
4

1 に答える 1

0

検証ルールは、DOM ロード時に利用可能な要素に基づいて構築されます。したがって、次のコードを使用して、検証に別のフィールドを含めるよう jQuery validate に指示する必要があります。

$('#addName').click(function (event) {
    event.preventDefault();
    var $newdiv = $('<label for="name">Name: </label><input class="text-files" data-val="true" data-val-required="Name missing" id="name" name="name" type="text" value=""><span class="field-validation-error" data-valmsg-for="name" data-valmsg-replace="true"></span>');
    $("#name").rules("add", "required"); // let validate know about the new field.

    $('.names').append($newdiv);
});
于 2013-08-21T10:21:15.020 に答える