양식에 숨겨진 필드가 필요합니다. 숨겨진 필드는 사용자가 jQuery UI 자동 완성을 사용하여 텍스트 상자에서 값을 선택할 때 채워집니다. 검증이 실제로 작동하도록 숨겨진 필드를 무시하지 않도록 양식 유효성 검사기를 설정했습니다. 유효성 검사는 작동하지만 사용자가 자동 완성에서 원하는 옵션을 선택하면 숨겨진 필드가 채워지고 유효성 검사 메시지는 지워지지 않고 양식이 게시 될 때까지 표시됩니다. 숨겨진 필드가 설정되면 수동으로 $('form').validate()
또는 무언가를 호출해야합니까? 아니면 여분의 자바 스크립트 코드없이 이것을 지울 수있는 방법이 있습니까?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>
}
감사합니다. 정상적인 검증 중에 숨겨진 필드에 트리거하지 있기 때문에 오류 메시지가 계속
<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