问题
如果您有一个微调器并使用对话框中断旋转过程,例如上一个字段的模糊,或微调器的焦点,当对话框关闭时,微调器继续旋转过程,就好像鼠标被按住旋转一样按钮,就像一个无限循环。
我创建了一个jsfiddle来说明这一点,它由 2 个微调器和一个更改事件中的确认对话框组成。
为了看到无限旋转:
- 如示例页面所述触发确认对话框。
- 清除对话框(可以使用“确定”或“取消”按钮)。
- 将鼠标悬停在微调器控件的按钮上。
- 看旋转器去!
\Edit - 有没有触发的 mouseleave 代码,我认为这就是问题所在。打算看看我是否可以手动实现这一点
尝试过的变通方法
- 我曾尝试在显示确认之前禁用其他微调器,然后重新启用它们,希望它会清除状态,但这不起作用。
- 在我的情况下,我在订购单上使用微调器。我使用确认进行最大数量检查:如果用户确认,则允许该值,否则将其设置回之前的值。我尝试将确认放入旋转事件,但是当用户使用键盘更新输入字段时,这不会触发。
- 我还在停止事件中尝试过,每次按下鼠标/按键后都会触发。但是,这效果不佳,因为我的微调器的最大数量是 999,并且确认显示在不同的值上,这些值都很低,例如 12。因此,如果用户想输入 130,他们会在输入时得到确认对话框3,这不是预期的行为。请注意,这可能最终成为我的解决方法,因为这种情况最不可能发生。
- 我还尝试设置一个标志来检查旋转事件,以便可以取消第二个旋转器的旋转。这确实有效并防止它旋转,但是一旦取消设置标志,问题就会发生。将焦点和模糊应用于第二个微调器(或任何其他微调器)无济于事,对实际微调器按钮应用模糊也无济于事。
我想我已经在 jQuery UI 1.9 微调器中发现了一个错误,它影响了所有浏览器,并且出现在里程碑 8 中。我希望有更多知识的人可以给我一个解决方法(拜托!),直到修复发出...
因为我相信这是 jQuery UI 库中的一个错误,所以我在jQuery 论坛上提出了这个问题,所以如果我在那里听到任何消息,我会及时更新这个问题。