asp.net-mvc-3 - 客户端验证不适用于 asp.net mvc 3 中的隐藏字段

标签 asp.net-mvc-3 jquery-validate asp.net-mvc-validation

我有一个隐藏字段,其验证如下

@Html.HiddenFor(m => m.Rating)
@Html.ValidationMessageFor(m => m.Rating)

Rating 属性应用了 Range 验证器属性,范围为 1-5。它被放置在带有提交按钮的表单内。

然后我得到了以下jquery,它在某些用户事件的隐藏字段中设置值(基本上是用户点击一些星星来评分)

$(".star").click(function(){
    $("#Rating").val(2);
});

现在,如果我在没有设置隐藏字段的用户事件的情况下提交表单,则验证有效。错误消息正确显示,并且在所有客户端均有效。

现在,在这种情况下,如果我单击星星,则会调用上面的 javascript 设置隐藏字段,验证错误消息不会消失。我可以在隐藏变量具有一些有效值后提交表单。但我希望客户端验证应该有效。 (当隐藏变量设置了一些有效值时,验证错误应该消失)

最初我想,jquery 验证会在一些特殊事件上调用,所以我尝试自己引发点击、更改、keyup、模糊和焦点事件,如下所示

$(".star").click(function(){
    $("#Rating").val(2);
    $("#Rating").change();
});

但这仍然不起作用。错误消息一旦出现,就根本不会消失。

最佳答案

您可以使用 div 包裹隐藏字段,该 div 放置在某处但仍在 <form> 内。 。添加css将其踢到外太空。

<div style="position:absolute; top:-9999px; left:-9999px">
<input id="Rating" type="hidden" name="rating" >
</div>

然后将以下标签添加到要显示错误的位置:

<label for="rating" class="error" style="display:none">I am an an error message, please modify me.</label>

关于asp.net-mvc-3 - 客户端验证不适用于 asp.net mvc 3 中的隐藏字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7790478/

相关文章:

asp.net - 使用 ASP.NET MVC 3 Helpers 渲染带有标题属性的 span 标签

javascript - jQuery 验证规则不适用于嵌套 html 标签

css - MVC 验证输入验证错误 CSS 不工作

asp.net-mvc - 如果模型无效,带有 exceptPropertyErrors = true 的 ASP.NET MVC Validationsummary 将呈现为空

asp.net - 动态修改web.config文件有什么问题吗

asp.net-mvc - View 未将正确的信息传递给 Controller

asp.net - 执行处理程序 'System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper' 的子请求时出错

jquery - 使用 jQuery Validation 根据两个不同的规则验证单个文本框会跳过第二条错误消息

asp.net-mvc - @Html.DropDownListFor 方法中的错误 : The field ID must be a number.

c# - 禁用字段的 MVC "must be a number"数据类型验证