在Internet Explorer(IE)中未触发的jquery更改事件
好的我知道还有其他与我有关的问题,但我没有读过我的问题。
我有一个select标签,其中包含一些我更改事件的选项,但是当用户点击一个选择框然后按下向上/向下时,更改事件不会在IE中触发。 它在Firefox中启动,我还没有检查过Chrome。
所以我想我想知道是否有一个简单的解决方案,我想这样做
$("#selector").change(function () {//Add code });
我现在的解决方法是这样做:
$("#selector").bind('change keyup',function () {//Add code });
我想我可以像这样创建一个插件:
$.fn.myChange = function (fcn) { return this.bind('change keyup',fcn);}
我的主要想法是jquery作为一个库应该抽象掉浏览器(in)兼容性的丑陋细节,所以我更喜欢我仍然可以使用base .change函数而不必担心我在使用什么浏览器。
我只是想知道这是不是应该这样做。 有更好的方法吗?
更新 :
我向jquery团队提交了一个错误 ,看看他们的想法。
这是一个显示问题的示例 。 打开它,点击进入选择框,然后按向上/向下键。 您会注意到,IE和Chrome不会触发更改事件。
在您的示例中,如果您进行此更改,它将起作用:
$("#sel").bind($.browser.msie ? 'propertychange' : 'change', function(e) { $("#output").append("boxval changed!" + $(this).val()); });
请注意,我添加了+ $(this).val()
因此您可以看到它对实际值有效。
你可以在这里看到它: http : //jsfiddle.net/At8Ht/3/
请注意,这也可以这样做:(删除浏览器嗅探)但我没有在所有浏览器中测试过。
$("#sel").bind('propertychange change', function(e) { $("#output").append("boxval changed!" + $(this).val()); });
IE不会触发onchange事件,直到有问题的元素失去焦点。 使用箭头键选择一个选项,然后单击框外部或选项卡。
是的,IE糟透了的另一个原因。 我通过使用onchange和onclick处理程序在常规javascript中解决它来做同样的事情。 看起来这就是jQuery正在做的事情。 99%的用户会通过点击选择内容。 另外1%,他们会专注于他们点击的东西。
它应该适用于所有浏览器。 我已经多次遇到过你的问题,而且大部分时间都是因为我没有在ready(jQuery.ready)上添加事件处理程序。