JQuery填坑系列(二):动态添加表单校验失效问题

42次阅读

共计 639 个字符,预计需要花费 2 分钟才能阅读完成。

表单验证用的 jquery validation 插件,还用到了下拉列表相关的插件”selectize”。有这样一个功能,表单中一个下拉列表 A 的”required”属性是根据另一个下拉列表 B 的选择内容来动态变换的。于是想着根据 B 被选中的值来添加或者删除 A 的”required”属性,好像是实现了这一个功能。没想到,这其中暗暗地隐藏着一个个坑 o(╥﹏╥)o。
首先呢,往 A 中用 attr(“required”,true) 方法添加必选校验,点击提交按钮的时候,A 的校验并没有生效,检查了浏览器内的页面 HTML 代码,发现是有这个属性的,怎么肥四呢?做了一通 research,原来 form 表单的校验规则是在页面加载完成时就已经创建好了,并且不会实时监听表单元素属性变化来动态更改的。于是看了一下 jquery validation 插件的官方文档,它提供了两种方法,可以在表单元素上添加,删除校验规则。如下↓

(如果小伙伴们碰到了和我一样的问题,可以试着用上面的代码,毕竟是插件自带的方法,绝对有效)
好了,动态添加校验规则的问题解决了,又一个问题来了(摔!)用”selectize”插件给下拉列表 A 做配置,比如禁止添加下拉选项,添加 placeholder 等,发现它会影响动态添加的“required”属性,导致校验失败。想着用原生的 HTML 和 JS 代码来实现”selectize”插件配置的功能,但又和目前系统的展示效果不是很一致……本人小白,目前还没有解决这一问题,如果你有解决方案,欢迎评论区留言哈~~

正文完
 0