我的窗體上有一個隱藏字段,是必需的。當用戶使用jQuery UI自動完成從文本框中選擇一個值時,隱藏字段就會填充。我已經設置了我的表單驗證器,不會忽略隱藏的字段,以便驗證實際上可行。驗證確實有效,但是當用戶從自動完成中選擇所需的選項時,然後填充隱藏的字段,驗證消息將不會清除,並且會在表單發佈之前顯示。我是否需要手動調用$('form').validate()
或者一旦隱藏字段被設置或有沒有一種方法可以清除這個清除,而無需額外的JavaScript代碼?ASP.NET MVC4 - 值設置後未隱藏字段驗證
我的視圖模型:
public class IndexViewModel
{
public string SchoolName { get; set; }
[Required]
public int SchoolId { get; set; }
}
筆者認爲:
@model IndexViewModel
@using (Html.BeginForm())
{
<p>
@Html.LabelFor(m => m.SchoolName)
@Html.TextBoxFor(m => m.SchoolName)
@Html.HiddenFor(m => m.SchoolId)
@Html.ValidationMessageFor(m => m.SchoolId)
</p>
<p>
<input type="submit" />
</p>
}
@section scripts {
<script>
$(function() {
// stop validator from ignoring hidden fields
var validator = $('form').data('validator');
validator.settings.ignore = "";
// schoolname autocomplete
$('#SchoolName').autocomplete({
minLength: 1,
source: [
{ label: "ABC University", value: "1" },
{ label: "Oklahoma University", value: "2" },
{ label: "Texas University", value: "3" }
],
select: function (e, ui) {
e.preventDefault();
$('#SchoolId').val(ui.item.value);
$('#SchoolName').val(ui.item.label);
}
});
});
</script>
}
在此先感謝。
編輯
Sparky的,這裏呈現的HTML:
<form action="/" method="post">
<p>
<label for="SchoolName">SchoolName</label>
<input id="SchoolName" name="SchoolName" type="text" value="" />
<input data-val="true" data-val-number="The field SchoolId must be a number." data-val-required="The SchoolId field is required." id="SchoolId" name="SchoolId" type="hidden" value="" />
<span class="field-validation-valid" data-valmsg-for="SchoolId" data-valmsg-replace="true"></span>
</p>
<p>
<input type="submit" />
</p>
</form>
我認爲[this](http://stackoverflow.com/questions/7790478/client-side-validation-not-working-for-hidden-field-in-asp-net-mvc-3)會幫助你。 –
您應該向我們展示瀏覽器看到的表單的_rendered_ HTML。 – Sparky