我在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键而不更改文本时,加载光标出现(重复),但是当我编辑文本然后按回车键时,光标不会改变。
你有什么想法吗?
答案 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){