3

構成でクライアント側の検証を有効にしており、検証用の適切なjqueryファイルも含めていますが、送信するたびに、最初にクライアント側の検証を行わずにページがサーバーに投稿されます。以下のソースで生成されたマークアップを貼り付けました。データ検証メッセージを正常に生成しているようです。どういうわけか検証をトリガーしていません。

Nugetで利用できるBeginCollectionライブラリを使用して、動的フォームを作成しています。それが、クライアント側での検証が何らかの理由で機能しない理由でしょうか?

    <input class="text-box single-line valid" data-val="true" 
data-val-number="The field DaysAbsent must be a number." 
data-val-required="The DaysAbsent field is required." 
id="students_471abdc8-b190-42da-9f72-ed30a1e33b10__DaysAbsent" 
name="students[471abdc8-b190-42da-9f72-ed30a1e33b10].DaysAbsent" 
type="text" value="0">

私のweb.config:

<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />

_Layout.cshtml:

    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/jqueryui")
    @Scripts.Render("~/bundles/jqueryval")
    @RenderSection("scripts", required: false)

BundleConfig.cs:

            bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                    "~/Scripts/jquery.unobtrusive*",
                    "~/Scripts/jquery.validate*"));
4

1 に答える 1

0

動的フォームについて言及したので、入力を動的にロードしている場合、 jquery.validate はそれらがそこにあることを知りません。新しい入力を検証するには、フォームの検証を「更新」する必要があります。

新しい入力を追加した後、このコードを使用してフォームの検証を「更新」します。

$('form').removeData('validator');
$('form').removeData('unobtrusiveValidation');
$.validator.unobtrusive.parse($('form'));
于 2014-02-10T16:10:17.863 に答える