@ Scripts
_ <script src="@Url.Content("~/Scripts/jquery-1.7.1.min.js")"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.js")"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")"></script>
_
@ View
_@using (Html.BeginForm("TestModelState", "RandD", FormMethod.Post, new {id="form123" }))
{
@Html.TextBoxFor(x => x.htmlText, new { style="display:none"})<br />
@Html.ValidationMessageFor(x => x.htmlText)
<div>
@Html.TextBoxFor(x => x.Uprop1)<br />
@Html.ValidationMessageFor(x => x.Uprop1)
</div>
<input type="submit" value-="Submit" onclick="abc()" />
}
_
私が試したもの
var validateMeta = $( '#form123')。validate(); validateMeta.settings.ignore = "";
$.validator.setDefaults({ignore: ""});
$.validator.setDefaults({ ignore: [] });
私はこれと同じ問題に遭遇しました。ページの非表示フィールドには、オートコンプリートテキストボックスから選択されたユーザーIDが格納されていました。このIDには、ゼロ以外のIDがポストバックされたことを確認するための検証がありました。この検証をクライアント側に含めたかったのです。
デフォルトでは、jQuery検証は、非表示フィールド、幅と高さがゼロの要素、css display:noneを持つ要素、および(同じ基準を使用して)非表示の親を持つ要素を無視します。
ただし、次のスクリプトを追加することで、無視の設定を上書きできます($ .validator.addMethod()を呼び出す前に、カスタムバリデータースクリプトに追加しただけです)。
_// By default validator ignores hidden fields.
// change the setting here to ignore nothing
$.validator.setDefaults({ ignore: null });
_
注:このコードは、_document ready
_またはjQuery $(function () {})
メソッド内で実行すると機能しません。
検証用のスクリプトを挿入した直後に、ignoreを ""に設定します。
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
<script type="text/javascript">
$.validator.setDefaults({
ignore: ""
});
</script>
}
試す
var validator = $("#form-id").data('validator');
validator.settings.ignore = "";
ユーザーが表示または編集できないフィールドの検証を表示する必要がある理由がわかりません。しかし、これを試すことができます。の代わりに display:none
、適用visibility:hidden
およびheight:0
を入力フィールドに追加します。
@using (Html.BeginForm("TestModelState", "RandD", FormMethod.Post, new {id="form123" }))
{
@Html.TextBoxFor(x => x.htmlText, new { style="visibility:hidden;height:0"})<br />
@Html.ValidationMessageFor(x => x.htmlText)
<div>
@Html.TextBoxFor(x => x.Uprop1)<br />
@Html.ValidationMessageFor(x => x.Uprop1)
</div>
<input type="submit" value-="Submit" onclick="abc()" />
}