Suh*_*has 9 jquery-validate asp.net-mvc-validation asp.net-mvc-3
我有一个隐藏的字段,验证如下
@Html.HiddenFor(m => m.Rating)
@Html.ValidationMessageFor(m => m.Rating)
Run Code Online (Sandbox Code Playgroud)
该Rating
属性具有Range
应用的验证程序属性,范围为1-5.这是一个带有提交按钮的表单.
然后我得到了以下jquery在一些用户事件中设置隐藏字段中的值(基本上用户点击一些星级来评价)
$(".star").click(function(){
$("#Rating").val(2);
});
Run Code Online (Sandbox Code Playgroud)
现在,如果我在没有设置隐藏字段的用户事件的情况下提交表单,则验证有效.错误消息正确显示,它适用于所有客户端.
现在,在这种情况下,如果我点击星号,调用上面的javascript设置隐藏字段,验证错误消息就不会消失.我可以在隐藏变量具有一些有效值后提交表单.但我期待客户端验证应该有效.(当隐藏变量设置为某个有效值时,验证错误应该消失)
最初我认为,jquery验证将在一些特殊事件上调用,所以我尝试自己提高点击,更改,键盘,模糊和焦点事件,如下所示
$(".star").click(function(){
$("#Rating").val(2);
$("#Rating").change();
});
Run Code Online (Sandbox Code Playgroud)
但这仍然无效.错误消息一旦出现,就不会消失.
小智 5
你可以用一个div放在你的隐藏字段中,但仍然在里面<form>
.添加css将其踢到外太空.
<div style="position:absolute; top:-9999px; left:-9999px">
<input id="Rating" type="hidden" name="rating" >
</div>
Run Code Online (Sandbox Code Playgroud)
然后将以下标签添加到要显示错误的位置:
<label for="rating" class="error" style="display:none">I am an an error message, please modify me.</label>
Run Code Online (Sandbox Code Playgroud)
小智 5
客户端验证忽略隐藏字段.您可以动态设置"忽略"选项,但只是为了使其工作,我在.js文件中直接执行了以下操作.
现在这应该可以解决问题.
在我的aspx中......
<%: Html.HiddenFor(model => model.age, new { @class="formValidator" }) %>
Run Code Online (Sandbox Code Playgroud)
在jquery.validate.js中
ignore: ":hidden:not('.formValidator')",
Run Code Online (Sandbox Code Playgroud)
小智 5
这结果是一个非常有趣的问题.默认的"忽略"设置忽略隐藏字段.该字段隐藏在jQuery ui插件中.我只是在我想验证的渲染输入中添加了一个名为"includeCheckBox"的类,并将以下代码行放入...
var validator = $('#formMyPita').validate();
validator.settings.ignore = ':hidden:not(".includeCheckBox")';
if ($('#formMyPita').valid()) {....
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8995 次 |
最近记录: |