显示和隐藏成功和错误与"jQuery validation"和"Select2"



不重复

以前的问题(关于这个主题(和答案是 4-5 年前的,并参考相应项目的旧版本。

地位

在我正在使用的项目中:

  • 引导程序 v4.4.1
  • j查询验证插件 v1.19.1
  • 选择2 v4.0.13
  • 选择2 引导4主题 v1.3.2

问题所在

Bootstrap4jQuery validation plugin配合得很好。

jQuery validation不适用于开箱即用Select2

我设法为valid/invalid state添加了大纲.

然而,我无法让它消失on blur(单击页面的白色区域不受控制(,就像只有Bootstrap4jQuery validation一样。

例子

我创建了 2 个显示问题的 JSFiddle-s。

jQuery Validation+bootstrap4= 按预期工作:示例 1

jQuery Validation+bootstrap4+Select2= 问题:示例 2

结论

我已经仔细查看了现有的类似问题StackOverflow并尝试了大多数建议,但它们引用了旧版本的库,不适用于当前情况,因为在新版本的库中使用了不同的代码结构......所以旧的解决方案不再有效...我试图在应用解决方案时解释这一点,但无济于事。

在这一点上,我被困住了。

感谢您的想法和建议!

我仔细研究了现有的类似问题 StackOverflow并尝试了大多数建议,但他们参考了 旧版本的库,不适用于当前情况,如 新版本的库使用了不同的代码 结构。。。

事实并非如此。 没有复制/粘贴千篇一律的方法,但是这个想法与以前的版本完全相同。

当 jQuery Validate 查看底层隐藏的select元素时,用户正在与 Select2 元素进行交互。因此,您必须构造一个自定义事件处理程序,该处理程序实际上会触发对隐藏元素的验证,如这些较旧的答案所示。

https://stackoverflow.com/a/30881932/594235

https://stackoverflow.com/a/46953372/594235

还有我 2014 年的一个......

https://stackoverflow.com/a/26046295/594235

这些答案的核心概念与用于解决您的问题的概念完全相同,并且都具有以下共同点......

在某个适当的事件上,以编程方式触发基础select元素的验证。

$('#selectElement').on('event', function() {
$('select').valid();
});

解决方案

与以前的版本和集成一样,它只需要一些外部事件处理程序来触发所需的操作。

严格回答您的问题,创建一个事件处理程序,当您将焦点从选择之外时触发。 请记住,Select2 替换了 DOM 中的默认select。 jQuery Validify正在处理隐藏select,而用户只与Select2元素交互。

$('.select2').on('focusout', function() {  // focus out of Select 2
$mySelect.valid();    // trigger validation of hidden select
});

演示:jsfiddle.net/n91g8xfm/

但是,我会更进一步,并在所选值更改时触发验证,以便效果立即生效。

$mySelect.on('change', function() {  // change value of hidden select
$(this).valid();   // trigger validation of hidden select
});

演示 2:jsfiddle.net/gkzeoq1v/

相关内容

  • 没有找到相关文章

最新更新