jQuery - 选择更改事件会导致选择框在 IE10 和 FF 中立即再次关闭
jQuery - select on change event causes select-box to instantly close again in IE10 and FF
我在将jQuery"on change"事件绑定到IE10和(各种)Firefox版本中的<select>
框时遇到了一个非常奇怪和烦人的问题。
此问题不会出现在 Chrome 或 IE11 中。
单击选择框后打开的下拉菜单会立即再次关闭,但前提是绑定了"更改时"事件。
我在这里使用了相当标准的jquery例程:
$(document).on("change", "#kp_gebdat_y, #kp_gebdat_m, #kp_gebdat_d", function () {
var year = $("#kp_gebdat_y").val();
var month = $("#kp_gebdat_m").val();
var day = $("#kp_gebdat_d").val();
$("#kp_gebdat").val(year + "-" + month + "-" + day);
});
我已经尝试过弄乱preventDefault()
但这不会改变。 似乎在IE10中单击任何保管框后,第一个下拉列表是"聚焦"的。
下面是一个JSFiddle,它在IE10和FF中也重现了这个问题:http://jsfiddle.net/northkildonan/7zyw2nff/1/
任何帮助将不胜感激!
如上面的评论所述,问题不在于 jQuery 或 JavaScript 事件处理程序,而在于标记本身。选择字段嵌套在标签标签内:
<label>
<select type="text">
<option value="0">Tag</option>
[...]
</select>
<select type="text">
<option value="0">Monat</option>
[...]
</select>
<select type="text">
<option value="0">Jahr</option>
[...]
</select>
</label>
这就是导致错误的原因:如果您聚焦第二个或第三个选择字段,则事件将委托给标签,该标签(在 FF 中)绑定到第一个表单字段子级 - 您的第一个选择字段并聚焦它 - 并且该焦点会导致同一标签内的第二个 + 第三个选择字段立即模糊。因此,您可以完全删除标签,也可以将每个选择嵌套在自己的标签中:
<label>
<select type="text">
<option value="0">Tag</option>
[...]
</select>
</label>
<label>
[...]
</label>
我认为最后FF行为是正确的,因为标签应该与一个元素相关。
相关文章:
- 下拉选择可自动更改第二个下拉选择
- 如何使用jQuery选择下拉列表的值
- jquery点击函数select&取消选择
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 按照选项卡索引的顺序循环一个jQuery选择
- 在动态创建的元素上获取对特定选择器的引用
- AngularJS-在JSON选择器中使用变量名
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 获取选择框的状态
- d3基于用户选择动态更新节点
- 提交后保留下拉选择的值
- JQuery对动态创建的对象进行选择
- 无法在Ionic select中预先选择最后一个选项
- 从FF和谷歌浏览器的像素坐标中选择
- 动态选择列表上的单击事件仅适用于 FF
- jQuery - 选择更改事件会导致选择框在 IE10 和 FF 中立即再次关闭
- 选择默认箭头不'不要躲在FF上
- Jquery:在IE和FF上具有多个添加日期的日期选择器
- jQuery选择菜单验证器适用于FF和Chrome,但不适用IE
- 模拟点击事件的选择(不工作的IE和FF)