加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-4 – 动态更改jQuery不显眼的验证属性

发布时间:2020-12-16 03:42:31 所属栏目:asp.Net 来源:网络整理
导读:我有一个在ASP.NET MVC 4中构建的页面,它使用 jquery.validate.unobtrusive库进行客户端验证.有一个输入需要在一个数字范围内.但是,此范围可以根据用户与表单其他部分的交互动态更改. 默认值验证正常,但是在更新data-rule-range属性后,仍会在原始值上触发验
我有一个在ASP.NET MVC 4中构建的页面,它使用 jquery.validate.unobtrusive库进行客户端验证.有一个输入需要在一个数字范围内.但是,此范围可以根据用户与表单其他部分的交互动态更改.

默认值验证正常,但是在更新data-rule-range属性后,仍会在原始值上触发验证和消息.

以下是初始页面加载的输入:

<input id="amount" data-rule-range="[1,350]" data-msg-range="Please enter an amount between ${0} and ${1}">

这将正确验证消息.如果输入的数字大于350,请输入介于$1和$350之间的金额.

事件在其他地方触发后,数据规则范围会更新,元素看起来如下:

<input id="amount" data-rule-range="[1,600]" data-msg-range="Please enter an amount between ${0} and ${1}">

此时,如果在输入中输入500,则将使用相同的先前消息验证失败,该消息表明它必须在$1和$350之间.我也试过从表单中删除验证器和unobtrusiveValidation并再次解析它没有运气.

$('form').removeData('validator');
$("form").removeData("unobtrusiveValidation");
$.validator.unobtrusive.parse("form");

是否有一种干净的方法可以动态地根据输入属性更改验证行为?

解决方法

您无法通过更改数据属性来动态更改规则.这是因为jQuery Validate插件是使用页面加载时的现有属性初始化的…在对属性进行动态更改后,插件无法自动重新初始化.

您必须使用开发人员提供的.rules(‘add’)和.rules(‘remove’)方法.

见:http://jqueryvalidation.org/rules/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读