[英]Enter in input field focus nearest button in IE9
我在下面的代码中有一个输入字段和一个按钮。
我已经编写了一些JavaScript代码来捕获键入内容,并在其Enter键显示警报。
在Firefox中可以正常工作,但是在IE9中,在输入字段中输入回车会导致按钮变为焦点,并且不会触发javascript中的keyUp触发器。
任何人都有解决方案的建议吗?
jsfiddle: http : //jsfiddle.net/c46khq2x/1/
HTML:
<input type="text" class="js-field-click"/>
<button class="js-button-click">Button</button>
javascript(JQuery):
$( document ).ready(function() {
$(".js-field-click" ).keyup(function(e) {
var val = $(this).val();
var code = e.which;
if(code==13){
alert("field enter");
}
});
$(".js-button-click").click( function() {
alert("button click");
});
});
嗨,代码有问题。 有几件事需要纠正。 您可以在下面尝试检查...
$( document ).ready(function() {
$(".js-field-click").on('keydown', function(e) {
var val = $(this).val();
var code = e.which;
if(event.which == 13){
alert("field enter");return false;
}
});
$(".js-button-click").click( function() {
alert("button click");
});
});
一些注意事项:-
1.更喜欢将选择器更改为窗口
2.使用.on()函数
3.添加return false; 阻止事件冒泡。
我找到了一个解决方案,似乎IE9选择了表单中的下一个按钮,因此通过将文本字段包装在表单中并将按钮保留在表单之外,则IE9将不会选择该按钮,并且脚本将起作用
<form>
<input type="text" class="js-field-click"/>
</form>
<button class="js-button-click">Button</button>
我模拟Internet Explorer 9,并将您的代码操纵为:
$( document ).ready(function() {
$(".inp" ).keyup(function(e) {alert('keyup triggered');
var val = $(this).val();
var code = e.which;
if(code==13){
alert("field enter");
}
});
$(".but").click( function() {
alert("button click");
});
});
和HTML:
<input type="text" class="inp"/>
<button class="but">Button</button>
当我输入字母时,它会提示“按键触发”。 但是当我单击Enter键时。 它将点击事件发送到按钮(但是),并警告“按钮点击”。 但它不会将keyup事件发送到输入
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.