Javascript 如何组合点击事件&;enterkey的键关闭?
我有一个小测验,我正试图得到它,以便在用户输入答案后,他们可以单击提交按钮或按键盘上的enter键。我尝试使用回调函数捕获这两个实例Javascript 如何组合点击事件&;enterkey的键关闭?,javascript,jquery,Javascript,Jquery,我有一个小测验,我正试图得到它,以便在用户输入答案后,他们可以单击提交按钮或按键盘上的enter键。我尝试使用回调函数捕获这两个实例 <form> <input id="answer"></input> <button id="btn" class="submit">SUBMIT</button> </form> var cal
<form>
<input id="answer"></input>
<button id="btn" class="submit">SUBMIT</button>
</form>
var callback = function() {
var myAnswer = document.getElementById('answer').value;
if (myAnswer == "y" || myAnswer == "Y" ) {
$('.content-bd').html("<p>Well done!<p>");
}
else {
$('.content-bd').html("<p>Try again<p>");
}
};
$("input").keypress(function() {
if (event.which == 13) callback();
});
$('#btn').click(callback);
提交
var callback=function(){
var myAnswer=document.getElementById('answer')。值;
如果(myAnswer==“y”| | myAnswer==“y”){
$('.content bd').html(“做得好!”);
}
否则{
$('.content bd').html(“请重试”;
}
};
$(“输入”).keypress(函数(){
if(event.which==13)callback();
});
$('#btn')。单击(回调);
您无法收集事件
$("input").keypress(function(event) {
if (event.which == 13) callback();
});
您无法收集事件
$("input").keypress(function(event) {
if (event.which == 13) callback();
});
它的keydown功能不包括按键和传递事件
<input type="text" id="txt"/>
$('#txt').keydown(function (e){
if(e.keyCode == 13){
alert('you pressed enter ^_^');
}
})
$('#txt').keydown(函数(e){
如果(e.keyCode==13){
警报('您按下回车键^ ^');
}
})
它的按键功能不是随传递事件一起按键
<input type="text" id="txt"/>
$('#txt').keydown(function (e){
if(e.keyCode == 13){
alert('you pressed enter ^_^');
}
})
$('#txt').keydown(函数(e){
如果(e.keyCode==13){
警报('您按下回车键^ ^');
}
})
至少有四个问题:
按钮的默认类型
为提交
,因此单击该按钮将提交表单(并刷新页面)。如果不需要,请将type=“button”
添加到按钮中
input
标记是无效的标记,您永远不会写入
,您忘记了在按键
回调中声明事件
参数,因此您依赖于Firefox上不存在的全局事件。(它可以在Chrome或IE上工作。)
如果表单只有一个输入
,并且用户按Enter键,则某些浏览器会提交表单。如果您不希望发生这种情况,请阻止表单提交
因此:
var callback=function(){
var myAnswer=document.getElementById('answer')。值;
如果(myAnswer==“y”| | myAnswer==“y”){
$('.content bd').html(“做得好!”);
}
否则{
$('.content bd').html(“请重试”;
}
};
$(“输入”)。按键(功能(事件){
if(event.which==13)callback();
});
$('#btn')。单击(回调);
$(“表格”)。提交(虚假)代码>
提交
至少有四个问题:
按钮的默认类型
为提交
,因此单击该按钮将提交表单(并刷新页面)。如果不需要,请将type=“button”
添加到按钮中
input
标记是无效的标记,您永远不会写入
,您忘记了在按键
回调中声明事件
参数,因此您依赖于Firefox上不存在的全局事件。(它可以在Chrome或IE上工作。)
如果表单只有一个输入
,并且用户按Enter键,则某些浏览器会提交表单。如果您不希望发生这种情况,请阻止表单提交
因此:
var callback=function(){
var myAnswer=document.getElementById('answer')。值;
如果(myAnswer==“y”| | myAnswer==“y”){
$('.content bd').html(“做得好!”);
}
否则{
$('.content bd').html(“请重试”;
}
};
$(“输入”)。按键(功能(事件){
if(event.which==13)callback();
});
$('#btn')。单击(回调);
$(“表格”)。提交(虚假)代码>
提交
实际上,我更喜欢在包装表单上注册。这样,用户可以像通常一样与页面交互
$('form').submit(function (e) {
e.preventDefault();
...
});
这样,用户既可以按其中一个提交按钮,也可以在集中输入字段时按enter键
e.preventDefault()
用于阻止浏览器实际提交表单,这将导致页面刷新
这种方法的另一个好处是,在将来,如果更改表单并添加新字段/提交按钮,事件仍将得到正确处理
干杯。我实际上更喜欢做的是在包装纸上注册。这样,用户可以像通常一样与页面交互
$('form').submit(function (e) {
e.preventDefault();
...
});
这样,用户既可以按其中一个提交按钮,也可以在集中输入字段时按enter键
e.preventDefault()
用于阻止浏览器实际提交表单,这将导致页面刷新
这种方法的另一个好处是,在将来,如果更改表单并添加新字段/提交按钮,事件仍将得到正确处理
干杯。可能重复的可能重复的