2012-08-10 10 views
5

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" ... 
+0

をサイト全体に設定することができます私のDOCTYPEは、ChromeとIE9の両方で発生

+0

あなたのフォームはid# 'paserForm'を与えられていますか?また、ASP.NET MVCはあなたのために 'validate'を呼び出す必要があります。自分で呼び出すべきではありません。 –

+0

実際、実際のJSコードは単に$( "form")上で実行されているため、parserFormを明示的に呼び出すとテストのために何か変更があったかどうかが分かりました。同じです.validate() –

答えて

1

あなたは.NETのために控えめなJavascriptとクライアントの検証を有効にしていますか?

ビューで次のように設定してみてください:

@{ Html.EnableUnobtrusiveJavaScript(true); 
    Html.EnableClientValidation(true); 
    Html.ValidationSummary(true); 
} 

ます。また、それはあなたのweb.configファイルに

<appSettings> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
</appSettings> 
+2

私は持っています!まあ、私はそれをやって覚えていませんが、そこにあるので、私はNuGetそれをやったと仮定しています。それでも、これはまだ解決されていない問題へのほぼ1ヶ月の最初の提案です。 –

関連する問題