我正在开发一个使用ASPNET MVC 3,不引人注目的javascript和Razor的项目
我有Ajax.BeginForm的部分视图,其中包含如下字段:
@Html.TextBoxFor(model => model.FirstName, new { @class = "txt-input", placeholder = "Eg. First Name", maxlength = 50 })
@Html.ValidationMessageFor(model => model.FirstName, "*", new { @class = "form-comments redtxt" })
然后在表格的最后我有这个:
@Html.ValidationSummary(false, "Please complete the required fields", new { @class = "form-comments redtxt" })
如果我未输入任何值,则会在文本框附近正确显示"*"
,并在验证摘要中显示“请填写必填字段”。
问题是,当我输入正确的值时,只有"*"
无效,并且“请填写必填字段”仍然存在。
我需要在css中添加此内容,以便在第一次加载patial视图时不显示"*"
或“请填写必填字段”。
.validation-summary-valid
{
display: none;
}
.field-validation-valid
{
display: none;
}
如果输入有效数据,如何使验证摘要消失?
提前致谢!吉列尔莫。
答案 0 :(得分:0)
为什么它还在显示我不知道。
但快速解决方法是在@Html.ValidationSummary
周围放置一个if块并检查模型是否有效
@ if(!ViewContext.ViewData.ModelState.IsValid){
@Html.ValidationSummary(false, "Please complete the required fields", new { @class = "form-comments redtxt" })
}
我通常把我的验证摘要放在一个对话框中,如果Page.IsValid为真,我就不显示对话框div
- 这里更新是我知道的代码片段
@{ if(!ViewContext.ViewData.ModelState.IsValid){
<div id="errors" class="DisplayErrors">
@Html.ValidationSummary()
</div>
}}
<script type="text/javascript">
$(function () {
$(".Date").datepicker();
$(".button").button();
$(".DisplayErrors").dialog({ autoOpen: true, title:"Errors" });
});
</script>
答案 1 :(得分:0)
据我了解你的问题,你可以使用下面的代码。它只是一个黑客。
<script>
jQuery(function () {
jQuery('form')
.find('input')
.bind('keyup', function () {
var _summary = jQuery('.form-comments');
if ($(this).valid()) {
_summary.hide();
}
else {
_summary.show();
}
})
});
</script>