Javascript 当使用[Enter]键且存在多个表单时,提交预期HTML表单的通用解决方案?
基于此,当页面上存在多个表单时,在HTML表单字段中点击[Enter]键似乎没有定义标准行为或跨浏览器共享实现。我想要一个jQuery解决方案,它可以在任何表单字段上检测[Enter],发现它的直接封闭表单,并单击该表单的提交按钮 最终结果是,当在多表单页面上使用[Enter]时,在任何浏览器中提交预期受用户影响的表单 我正在寻找一个通用的解决方案,比如jQuery插件,它可以应用于多个有这个问题的网站,并且可以立即生效以提交预期的表单。我不想为条件语句编写代码,或根据表单或网站修改它们 可选更新:Javascript 当使用[Enter]键且存在多个表单时,提交预期HTML表单的通用解决方案?,javascript,jquery,key,form-submit,forms,Javascript,Jquery,Key,Form Submit,Forms,基于此,当页面上存在多个表单时,在HTML表单字段中点击[Enter]键似乎没有定义标准行为或跨浏览器共享实现。我想要一个jQuery解决方案,它可以在任何表单字段上检测[Enter],发现它的直接封闭表单,并单击该表单的提交按钮 最终结果是,当在多表单页面上使用[Enter]时,在任何浏览器中提交预期受用户影响的表单 我正在寻找一个通用的解决方案,比如jQuery插件,它可以应用于多个有这个问题的网站,并且可以立即生效以提交预期的表单。我不想为条件语句编写代码,或根据表单或网站修改它们 可选更
对于更详细的情况,请考虑每个表单只有一个类型=提交按钮,即默认/目标按钮< /强>窗体上的任何其他按钮都是type =按钮,而不考虑提交。p> 检测enter时的常见偶数:
$(document).keydown(function(objEvent) {
if (objEvent.keyCode == 13) {
$('.click-button').click();
}
})
在objEvent
变量内部有一个.target
,您可以使用它查看按下enter键的位置
请参见此处的小提琴:(在输入中尝试按enter键)
来自fiddle的代码:
$(document).keydown(function(objEvent) {
if (objEvent.keyCode == 13) {
alert($(objEvent.target).parent()[0].id + " pressed enter");
}
});
我会这样做:
$('input[type=text]').keydown(function(event){
if(event.keyCode == 13){
event.preventDefault();
$(this).closest('form').submit();
}
});
当在文本类型的输入字段内按回车键时,将提交相关表单(它不单击“提交”按钮,只提交表单)
编辑-如果要单击“提交”按钮,可以执行以下操作:
$(this).closest('form').find('input[type=submit]').click()
我使用此帮助函数设置默认的输入行为:
function SetFormDefaultButton(formId, buttonId) {
var formSelector = "#{0}".format(formId);
var buttonSelector = "#{0}".format(buttonId);
$(formSelector).find('input, select').live('keypress', function (event) {
if (event.keyCode == 13) {
event.preventDefault();
$(buttonSelector).click().focus();
return false;
}
});
}
基于此答案的第一段,我希望使用.click()而不是submit event可以将submit按钮视为已激活/成功,但我可以轻松调整脚本