I次のビューがあります。控えめな検証データ-valは属性を無視しますが、クラスでの作業=「必要」
$("form").validate();
if ($("form").valid()) {
//...
}
:タイマーの秒ごとに実行し、次のJavaScriptで
@using (Html.BeginForm())
{
<div class="left-column">
@Html.LabelFor(m => m.Expression)
@Html.TextAreaFor(m => m.Expression, new { @spellcheck = "false" })
@Html.EditorFor(m => m.Sku)
</div>
}
を
は、テキスト領域要素(検証を必要とする唯一の要素)のために、以下のHTMLを生成:
<textarea
data-val="true"
data-val-required="The Expression field is required."
cols="20" rows="2"
id="Expression" name="Expression"
spellcheck="false">
</textarea>
問題は、ブラウザツールを使用してclass = "required"を手動で追加しない限り、検証は何もしないということです。私はこの検証を行い、 "式フィールドが必要です"というエラーメッセージが表示されます。正確には "$(" form ")。valid()"は、textareaが空であっても常にtrueを返します。 私はデータval属性を自動的に生成するアノテーションを使用しているので、それらに頼っていきたいと思います。何が間違っているのですか?
FYI私のスクリプト、参考文献は、次のようになります。
<script src="/Scripts/modernizr-2.0.6-development-only.js" ...
<script src="/Scripts/jquery-1.6.2.js" ...
<script src="/Scripts/Parser.js" ...
<script src="/Scripts/jquery.unobtrusive-ajax.js" ...
<script src="/Scripts/jquery.validate.js" ...
<script src="/Scripts/jquery.validate.unobtrusive.js" ...
をサイト全体に設定することができます私のDOCTYPEは、ChromeとIE9の両方で発生 –
あなたのフォームはid# 'paserForm'を与えられていますか?また、ASP.NET MVCはあなたのために 'validate'を呼び出す必要があります。自分で呼び出すべきではありません。 –
実際、実際のJSコードは単に$( "form")上で実行されているため、parserFormを明示的に呼び出すとテストのために何か変更があったかどうかが分かりました。同じです.validate() –