私は次の見解を持っています:
@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>
}
タイマーで毎秒実行される次の JavaScript を使用します。
$("form").validate();
if ($("form").valid()) {
//...
}
テキスト領域要素 (検証が必要な唯一の要素) に対して次の 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 を返します。data-val 属性を自動的に生成する注釈を使用しているので、それらに依存したいと思います。私は何を間違っていますか?
参考までに、スクリプト参照は次のようになります。
<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" ...