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

发布于 2024-11-17 03:52:50 字数 567 浏览 0 评论 0原文

基于这个Stackoverflow问题< /a> 当页面上存在多个表单时,似乎没有定义的标准行为或跨浏览器的共享实现来在 HTML 表单字段中按 [Enter] 键。我想要一个 jQuery 解决方案,可以检测任何表单字段上的 [Enter],发现其直接封闭的表单,以及 .click() 是该表单的提交按钮。

最终的结果是在多表单页面上使用[Enter]时,在任何浏览器中都提交了预期受用户影响的表单。

我正在寻找一个通用解决方案,例如 jQuery 插件,它可以应用于多个存在此问题的网站,并使其立即生效以提交预期的表单。我不想编写条件语句或根据表单或网站更改它们。

可选更新:
对于更详细的场景,请考虑每个表单只有一个 type=Submit 按钮,这是默认/目标按钮
表单上的任何其他按钮都是 type=button,不考虑提交。

Based on this Stackoverflow question there seems to be no defined standard behaviour, or shared implementation across browsers, for hitting the [Enter] key in an HTML form field when multiple forms are present on the page. I'd like a jQuery solution that detects [Enter] on any form field, discovers its immediate enclosing form, and .click()'s that form's Submit button.

The end result is the form expected to be affected by the user is submitted in any browser when [Enter] is used on a multi-form page.

I'm looking for a generic solution, like a jQuery plugin, that can be applied to multiple websites having this problem and for it to immediately take effect to submit the expected form. I don't want to have to code conditional statements or alter them per form or website.

Optional Update:
For a more detailed scenario, consider each form has only one type=Submit button and that's the default/target button
Any other buttons on the form are type=button and not considered for submission.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

℉絮湮 2024-11-24 03:52:50

通常用于检测 Enter:

        $(document).keydown(function(objEvent) {
            if (objEvent.keyCode == 13) {
                 $('.click-button').click();
            }
        })

在 objEvent 变量内部有一个 .target,您可以使用它来查看按下 Enter 的位置。

请参阅此处的小提琴: http://jsfiddle.net/maniator/svzeq/ (尝试在进入时按 Enter输入)

来自小提琴的代码:

$(document).keydown(function(objEvent) {
    if (objEvent.keyCode == 13) {
        alert($(objEvent.target).parent()[0].id + " pressed enter");
    }
});

The usual even for detecting enter:

        $(document).keydown(function(objEvent) {
            if (objEvent.keyCode == 13) {
                 $('.click-button').click();
            }
        })

Inside of the objEvent variable there is a .target which you can use to see where the enter was pressed.

See fiddle here: http://jsfiddle.net/maniator/svzeq/ (try pressing enter when in an input)

Code from fiddle:

$(document).keydown(function(objEvent) {
    if (objEvent.keyCode == 13) {
        alert($(objEvent.target).parent()[0].id + " pressed enter");
    }
});
茶底世界 2024-11-24 03:52:50

我使用这个辅助函数来设置我的默认输入行为:

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;
        }
    });
}

i use this helper function to set up my default enter behaviour:

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;
        }
    });
}
幽蝶幻影 2024-11-24 03:52:50

我会做这样的事情:

$('input[type=text]').keydown(function(event){
   if(event.keyCode == 13){
   event.preventDefault();
   $(this).closest('form').submit();
   }
});

当在文本类型的输入字段内按下返回键时,会提交相对表单(它不会单击提交按钮,但只会提交表单)

编辑 - 如果您想单击您可以执行的提交按钮:

  $(this).closest('form').find('input[type=submit]').click()

I'd do something like this:

$('input[type=text]').keydown(function(event){
   if(event.keyCode == 13){
   event.preventDefault();
   $(this).closest('form').submit();
   }
});

when the return key is pressed inside a input field of type text, the relative form is submitted (it doesn't click the submit button but it just submits the form)

EDIT - if you want to click the submit button you could do:

  $(this).closest('form').find('input[type=submit]').click()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文