Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当使用[Enter]键且存在多个表单时,提交预期HTML表单的通用解决方案?_Javascript_Jquery_Key_Form Submit_Forms - Fatal编程技术网

Javascript 当使用[Enter]键且存在多个表单时,提交预期HTML表单的通用解决方案?

Javascript 当使用[Enter]键且存在多个表单时,提交预期HTML表单的通用解决方案?,javascript,jquery,key,form-submit,forms,Javascript,Jquery,Key,Form Submit,Forms,基于此,当页面上存在多个表单时,在HTML表单字段中点击[Enter]键似乎没有定义标准行为或跨浏览器共享实现。我想要一个jQuery解决方案,它可以在任何表单字段上检测[Enter],发现它的直接封闭表单,并单击该表单的提交按钮 最终结果是,当在多表单页面上使用[Enter]时,在任何浏览器中提交预期受用户影响的表单 我正在寻找一个通用的解决方案,比如jQuery插件,它可以应用于多个有这个问题的网站,并且可以立即生效以提交预期的表单。我不想为条件语句编写代码,或根据表单或网站修改它们 可选更

基于此,当页面上存在多个表单时,在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按钮视为已激活/成功,但我可以轻松调整脚本