4

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

这是一个例子:

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

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

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

您对此有解决方案吗?

4

2 回答 2

3

如果您希望在按 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
    }
});

我不确定您是否可以强制 IE 在以不同方式按下 Enter 时触发更改。

希望这会有所帮助。

于 2012-07-10T14:16:20.170 回答
2

这是针对 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();
        }
    });
}
于 2018-07-04T11:03:27.330 回答