在任何输入字段上发生任何“输入”键事件时,单击最近提交按钮

时间:2011-10-01 08:50:07

标签: javascript jquery

我在页面上有多个提交按钮。我想要的是如果用户在任何输入字段上按Enter键,它应该单击相关的提交按钮。我尝试了下面的方式,但它甚至无法抓住输入字段上的按键。

提前致谢,

$('* input').keypress(function (e) {

      if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
            $(this).closest('input[type=submit]').click();

      }
});

2 个答案:

答案 0 :(得分:5)

试试这个。除非提交按钮位于DOM树的上方,否则.closest()将无效。相反,你可以在输入的parentNode中搜索它,或者只提交表单(但你可能没有表单元素,因为否则这将是enter键的默认行为)。

$(document).ready(function() {
    $('input[type="text"], input[type="password"]').keypress(function (event) {
        if (event.keyCode == '13') { //jquery normalizes the keycode 

            event.preventDefault(); //avoids default action
            $(this).parent().find('input[type="submit"]').trigger('click');
            // or $(this).closest('form').submit();
        }
    });
});

答案 1 :(得分:1)

根本不需要javascript!

输入密钥将调用"隐式提交"按标准。当表格中有多个输入[type = submit]时,第一个将隐式"点击"通过回车。因此,您应该将默认按钮放在第一个。
如果要交换某些按钮,请使用CSS规则。

关于按钮和Enter键的一些有趣事实是here