IE输入不同的行为选择文本与否

时间:2012-01-08 01:59:51

标签: javascript html internet-explorer input

我在IE中发现了文本输入的奇怪行为。 我想在表单提交时更改光标,可以通过按Enter键来完成。

/* IE hack for on enter submit */
$('input').live('keydown', function(e){
    if (e.keyCode == 13) {
        $(this).parents('form').find(".submit").trigger("click");
        return false;
    }
});

随着移动后IE改变光标我必须通过光标分配页面特殊类的所有元素来破解它:progress;让它立即发挥作用。

$("form.ajax").live("submit", function () {
    $("#load_dialog").show(); /show loading dialog
    if($.browser.msie){ /IE hack
        $("*").addClass("waiting"); /assign class with loading cursor
    }
    $(this).ajaxSubmit(); /submit a form
    return false;
});

这很有效,但有一个奇怪的问题。 当我单击输入(选择文本)并按Enter键而不更改文本时,加载光标出现(重复),但是当我编辑文本然后按回车键时,光标不会改变。

你有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我会改变这个:

$('input').live('keydown', function(e){
    if (e.keyCode == 13) {
        $(this).parents('form').find(".submit").trigger("click");
        return false;
    }
});

到此:

$('input').live('keydown', function(e){
    var key = e.keyCode || e.which;
    if (key === 13) {
        $(this).parents('form').submit();
        return false;
    }
});

或者,如果您使用的是jQuery 1.7,那么on应优先于live,因为后者已被弃用且效率低下

$(document).on('keydown', 'input', function(e){
    var key = e.keyCode || e.which;
    if (key === 13) {
        $(this).parents('form').submit();
        return false;
    }
});

对于1.7之前的delegate是下一个最好的事情:

$(document).delegate('input', 'keydown', function(e){