如何使onchange事件在onclick事件之前触发(Bootstrap 4单选按钮)

时间:2019-01-28 14:41:13

标签: jquery

所以,这是我的问题-在进度滑块中,我有一部分页面要在单击的单选按钮上收集数据,并限制下一页的可能性,依此类推(继续进行四步)页),为此,我使用了onchange命令,从div中选中的单选按钮的ID中获取了一个数字,然后,在箭头单击命令上,我使用了.slice命令来获取值大于我之前选择的值,并禁用他们和他们的父母与一个类。现在,无论出于何种原因,当我尝试使用.click而不是.change时,都会在设置该值之前触发click事件,并且在翻页时,.slice命令最终会使用旧值(默认为0,因此slice命令会剪切除第一个选项以外的所有选项,基本上,它会在切换页面后更新剪切值。

我正在使用一个滑块(带有页面),用于我的ASP.NET学校网站的“首选项”部分,因此我想这样做,以便当您单击每页中的单选按钮时,就可以转到下一页,除了使用现有的箭头按钮外,还很简单(我认为)-只需单击标签,单选按钮的父级(这就是它们在Bootstrap中的构建方式),即可触发点击右箭头的事件,但这会导致我前面提到的问题。
我尝试了几种方法来解决它-首先,我尝试放置它,以便在这些页面上禁用输入单击,将click事件放在onchange事件内-可以,但创建了一个单独的问题,值正在更新,但是活动类是出于任何原因而没有赋予父标签的,这是一个很大的问题,因为您可以返回箭头并更改值,并且当您返回时,看不到它被选中,就像您可以通过其他单选按钮看到的一样,我也尝试将其组合,但是我似乎没有做任何事情,地狱,我什至尝试在change命令中给活动类,但无济于事,只有接近的东西是我忘记在箭头click事件的if语句之一中放入$的bug,修复了bug或删除了if语句使活动类在这些页面中不再起作用,这真是太奇怪了...我也应该提到我还尝试使用.click在标签上添加.click到change事件的末尾而不是.change等。

第一个功能是锁定页面,直到用户按下单选按钮为止;第二个功能是单击单选按钮以移动页面,第三个选项应该是如果您返回页面并想按相同的答案进入下一页(因为.change不会检测到它)

现在,它仅使用第二个功能转到另一页-双击(仅在这四个页面上,在其他页面上效果很好),当然,箭头仍然起作用。

非常感谢

1 个答案:

答案 0 :(得分:1)

在javascript中的这类情况下,您必须设置超时并推迟处理时间。有时有更好的解决方案,但有时在JS中是唯一的方法。

在当前事件代码上,在代码周围放置一个setTimeout:

setTimeout(function() { ...your current code... }, 1);

然后测试。有时,您必须根据事件的不同,稍微增加1ms的延迟,直到333ms(人类可以感知到超过333ms)。

此外,如果在超时时触发了某些命令,例如导航,则被禁止,但是如果超时是在主输入事件之后,则允许该操作。因此,使用延迟代码不是增加延迟的好主意,因此建议对各种浏览器和设备进行测试。