jquery - 使用 `jQuery 验证` 和 `Select2` 显示和隐藏成功和错误,符合`bootstrap4`
问题描述
不重复
以前的问题(关于这个主题)的答案是 4-5 岁,并参考各自项目的旧版本。
地位
在我正在使用的项目中:
- 引导程序 v4.4.1
- jQuery验证插件v1.19.1
- Select2 v4.0.13
- Select2 Bootstrap4 主题v1.3.2
问题
Bootstrap4
与jQuery validation plugin
.
jQuery validation
不适用于Select2
开箱即用。
我设法为valid/invalid state
.
然而我不能让它消失on blur
(点击页面的白色区域不受控制),就像只有Bootstrap4
and的情况一样jQuery 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 替换select
了 DOM 中的默认值。jQuery Validate 正在处理 hidden select
,而用户只与 Select2 元素交互。
$('.select2').on('focusout', function() { // focus out of Select 2
$mySelect.valid(); // trigger validation of hidden select
});
但是,我会更进一步,并在所选值发生变化时触发验证,因此效果是即时的。
$mySelect.on('change', function() { // change value of hidden select
$(this).valid(); // trigger validation of hidden select
});
演示 2: jsfiddle.net/gkzeoq1v/
推荐阅读
- ajax - $.ajax => @ModelAttribute = null
- python - 使用来自另一个数据帧的各种值创建一个新的数据帧
- c# - iOS 使用插件 NightlyRecorderService 录制的 Mp4Aar 音频无法在 Android 上播放
- pdf - 使用 PDF 中其他文本字段中的日期创建带有起始句子的新文本字段
- html - Django HTML电子邮件Gmail未呈现
- python-3.x - 从我的网络服务器,为什么我可以将文件保存到 Linux 而不是 Windows
- c++ - 用谷物序列化非默认可构造类型的优雅方法
- anylogic - 资源利用率如何计算?
- marie - 有没有办法使用玛丽汇编语言来确定一个数字是偶数还是奇数?
- php - PHP - 保留原始格式的 Google API 复制和粘贴行