我有一个隐藏字段,其验证如下
@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/