【问题标题】:How can I can set which submit button is fired on enter?如何设置在输入时触发哪个提交按钮?
【发布时间】:2011-02-23 14:08:19
【问题描述】:

我有一个带有多个提交按钮的表单。我希望我的最后一个按钮来处理提交,而不是 HTML5 规范的第一个按钮。

此时我无法更改 html,并且相当确定这需要 JS。但是当我试一试时,我陷入了令人讨厌的循环或死代码,试图阻止默认行为,然后触发我的另一个按钮。

以前有人做过吗?如果需要,页面上有 jQuery。

谢谢, 丹尼斯

【问题讨论】:

    标签: html forms submit


    【解决方案1】:

    既然你提到了 jQuery :)

    如果您只想在用户按下回车键时提交表单,那么

    $(function() {
        $('body').keypress(function(e) {
            if (e.which == 13) {
                e.preventDefault();
                $('#myForm').submit();
           }
        });
    });
    

    但是,如果您有不同的行为/表单,具体取决于单击的按钮,并且您希望 enter 键触发最后一个按钮的单击事件,那么

    $(function() {
        $('body').keypress(function(e) {
            if (e.which == 13) {
                e.preventDefault();
                $('input[type="submit"]:last').click();
            }
        });
    });
    

    【讨论】:

    • 第二个例子就是我所追求的!我有 smae,但正在向它发射 .submit() 和 .keypress() 。顺便说一句:我通常使用window.event.keyCode,与e.which有什么区别?
    • jQuery 的 e.which 返回被按下的 keyCode 并且可以跨浏览器工作。
    【解决方案2】:

    当您不希望它提交表单时,您应该将input 元素的type 属性更改为button。 (我知道你说过你不能真正改变 HTML,但这是 最好的方法)

    <input type="button" name="mybutton" class="submit-button" value="I wont submit!" />
    

    jQuery 代码:

    $('.submit-button').click(function() {
      $('#secret-value-field').val($(this).val());
      $(this).parents('form').submit();
    });
    

    或者类似的东西。

    【讨论】:

    • 但是他们需要提交回服务器。服务器页面根据其不同的名称进行分叉。如果我制作了其他按钮类型的按钮,它们将无法正常工作....
    • 然后将它们全部更改为按钮,然后添加单击处理程序以提交表单,并可能更改隐藏输入字段的值以供服务器切换基于。如果这听起来像你需要的,我可以用代码编辑我的答案。
    • 在我的情况下,这没有帮助...回车键仍然触发按钮(即使它执行按钮的操作而不是提交表单)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    • 2011-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多