如何在输入按键和两个提交按钮上区分表单提交

时间:2011-05-05 12:18:36

标签: jquery jquery-plugins

我有一个带有两个提交按钮的表单(提交具有不同ID的按钮)。我想采取不同的行动:

  1. ENTER KEY PRESS
  2. 点击提交按钮#1
  3. 点击提交按钮#2
  4. 有人可以指导我,我怎样才能通过jQuery实现这一目标。

    提前致谢

3 个答案:

答案 0 :(得分:2)

您可以使用此类代码:

$(":input").bind("click keypress", function(evt) {
    var keyCode = evt.which || evt.keyCode;
    if (keyCode == 13) {
        alert("ENTER pressed");
    }
    else {
        var sender = evt.target;
        if (sender.type == "submit")
            alert("Submit button " + sender.id + " clicked");
    }
    return true;
});

通过处理clickkeypress事件,您可以捕获所有需要的方案。

测试用例:http://jsfiddle.net/PChVY/

请注意,按 ENTER 也会触发第一个提交按钮click事件,因此要忽略此事件,您可以添加全局标记。

答案 1 :(得分:2)

您可以执行以下操作(See Live Example):

$(document).ready(function(){
    $("input[type='text'],input[type='password']").keypress(function(e){
        e.preventDefault();
        if (e.which == 13){
            alert("User pressed 'Enter' in a text input.");
            // do your custom processing here
        }
    });

    $("input[type='submit']").click(function(e){
        e.preventDefault();
        var submitClicked = e.target.id;
        alert("The submit button with id '"+submitClicked+"' was clicked!");

        //probably a switch statement here to do your custom processing based on which submit button was pressed.
    });
});

上面的代码将在任何文本或密码输入中捕获输入按键...将忽略对<textarea>的输入键按下(我想是一个期望的效果)。在输入任何文本或密码时按Enter键不会触发第一个提交按钮单击。

请注意,您必须使用$([your form selector]).submit();

通过上述代码手动提交表单

答案 2 :(得分:0)

 $(function(){   
    $("input").keypress(function(e){
         if (e.which == 13){
            e.preventDefault();
            alert("pressed 'Enter' preventDefault()<br>from Form #"+this.form.id);
            // do your custom processing here
        }
    });
 });

对我来说很好,