【发布时间】:2015-11-18 14:35:16
【问题描述】:
我正在处理一个旧项目,其中包含大量 jQuery 和一些 jQuery 插件。其中一个插件是jQuery Validation Plugin,它根据提供的自定义规则验证输入。另一个是jQuery Selecter plugin,它用一个模仿select标签行为的漂亮的div替换了普通无聊的select标签。
我现在遇到的问题是 jQuery Selecter 插件隐藏了普通的 select 标签,而是用户与 .selecter div 交互,然后以某种方式将选定的值传递给 select 标签。另一方面,jQuery Validation Plugin 仅在用户直接与该元素交互(单击它)时才尝试验证 select 元素。 jQuery Validation Plugin 不会被select 标签值的改变触发。这意味着当用户单击.selecter 元素并且jQuery Selecter 插件更改select 的值时,jQuery Validation Plugin 不会尝试检查select 元素的值并且仍然认为该元素无效.
所以我的问题是,有没有人有任何经验在选择器插件更改select元素的值时使用这两个插件以及使验证插件工作的任何经验?
【问题讨论】:
-
基本上,您需要为隐藏的
select编写一个change处理程序,该处理程序调用.valid()方法来强制立即验证此元素。但是,这就是我可以提供的所有帮助,而无需查看相关的 HTML 和 JavaScript 代码。 -
嗯,这里是 jQuery 验证插件的代码:ajax.aspnetcdn.com/ajax/jquery.validate/1.14.0/… 也许你会很清楚这个文件中声明的默认函数(
onclick、onkeyup、onfocusout)是如何捕获的相关事件。如果我明白这一点,那么也许我可以添加一个自定义change/onchange处理程序? -
我们不需要看插件的源代码,也不建议你编辑它们。我们需要查看你的相关的 JavaScript 代码...你是如何实现这些插件方法和表单的相关 HTML 的。
标签: jquery jquery-validate selectlist jquery-selecter-plugin