按Enter键时IE中的事件更改无效

时间:2012-07-10 14:09:04

标签: jquery internet-explorer

我想在更改输入[type = text]时执行一个函数,这在除IE之外的所有浏览器中都能正常工作。

这是一个例子:

$('input.switch').change(function(){
    alert('ok now');    
});

文本输入如下:
<input class="switch" type="text" value="50000" />

不要忘记我有很多不同类别的输入!

你有解决方案吗?

2 个答案:

答案 0 :(得分:1)

如果您希望在按Enter键时激活某个事件,请注册此事件:

$('input.switch:first').keydown(function(e){
    if (e.keyCode==13) { //Enter keycode
        //Do you stuff
    }
});

Enter不会激活更改,因为文本输入不会失去焦点。

祝你好运!

更新: 最新版本的jQuery允许您使用$('*:focus')获取焦点元素。我相信你应该添加支持IE的脚本。对于每个keydown,如果键是Enter,获取焦点输入,模糊并触发更改:

$('body').keydown(function() {
    if (e.keyCode==13) { //Enter keycode
        $('input:focus').blur().change(); //The blur is to prevent change happen again
    }
});

我不确定当以不同的方式按下Enter时,你可以强制IE触发更改。

希望这次有所帮助。

答案 1 :(得分:0)

这是针对IE的更具针对性的polyfill:

var isIE = !!document.documentMode;
if (isIE) {

    $("body").on("keydown", "input[type='text']", function (e) {

        // Ensure 'change' event is fired on enter in IE
        if ((e.keyCode || e.which) === 13) {
            $(this).blur();
        }
    });
}