【问题标题】:IE input different behavior selected text or notIE输入不同行为选择文字与否
【发布时间】:2012-01-08 01:59:51
【问题描述】:

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

/* 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 在移动后更改光标,我必须通过将页面特殊类上的所有元素分配给光标来破解它:进度;让它立即工作。

$("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 而不更改文本时,会出现加载光标(重复),但是当我编辑文本然后按 Enter 时,光标不会改变。

你不知道为什么吗?

【问题讨论】:

  • 不是您的 Q 的答案,但 $(document).addClass("waiting"); 会起作用吗?比将类附加到页面中的每个元素要好得多

标签: javascript html internet-explorer input


【解决方案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;
    }
});

对于 pre-1.7 delegate 是次优:

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

【讨论】:

  • 谢谢亚当,我现在更聪明了,但问题没有解决。要清楚......即使在我的原始代码中,表单的提交也被正确触发(表单是 ajaxed,我可以在控制台中看到它,我也可以看到受操作影响的更新区域)。问题似乎出在我更改课程的第二部分。但不知道文本输入的编辑如何使行为不同。
  • 决定停止使用光标并使用图像逐层加载状态...似乎 IE 使用光标更改真的很奇怪。无论如何感谢亚当的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-26
  • 2017-11-16
  • 1970-01-01
  • 2013-07-23
  • 2011-04-24
  • 2011-06-18
  • 2011-10-22
相关资源
最近更新 更多