用 "jQuery validation "和 "Select2 "显示和隐藏成功和错误,与 "bootstrap4 "一致 [重复]

问题描述 投票:0回答:1

不重复

以前的问题(关于这个主题)和答案都是4-5年前的,是指各个项目的旧版本。

状况

在项目中,我使用的是

问题

Bootstrap4 善于 jQuery 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 并尝试了大部分的建议,但它们参考了旧版本的库,并不适用于当前的情况,因为在新版本的库中使用了不同的代码结构......所以旧的解决方案不再适用......我试图在应用解决方案时考虑到这一点,但没有用。我试图在应用解决方案时考虑到这一点,但没有用。

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

谢谢你的想法和建议

jquery css bootstrap-4 jquery-validate jquery-select2
1个回答
0
投票

我仔细看了StackOverflow上现有的类似问题,并尝试了大部分建议,但他们参考了旧版本的库,并不适用于当前的情况,因为在新版本的库中使用了不同的代码结构。

根本不是这样的。 並沒有複製貼上cookie-cutter的方法,但想法和之前的版本完全一樣。

而jQuery Validate则是看底层的隐蔽性。select 元素,用户正在与Select2元素进行交互。 因此,你必须构建一个自定义的事件处理程序,以实用的方式触发对隐藏元素的验证。 如这些老答案中也有显示。

https:/stackoverflow.coma30881932594235。

https:/stackoverflow.coma46953372594235。

和我2014年的一个...

https:/stackoverflow.coma26046295594235

这些答案的核心概念与解决你的问题的方法完全一样,都有以下共同点......

在一些合适的事件上,通过编程触发验证底层的 select 元素。

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

解决办法:

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

严格地回答你的问题,创建一个事件处理程序,当你把焦点从select中移出时就会触发。 请记住,Select2取代了默认的 select jQuery Validate在隐藏的DOM中工作。select而用户只与Select2元素交互。

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

DEMO: jsfiddle.netn91g8xfm

然而,我会更进一步,每当选择的值发生变化时,就会触发验证,这样效果是即时的。

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

DEMO 2: jsfiddle.netgkzeoq1v

© www.soinside.com 2019 - 2024. All rights reserved.