键盘通过jQuery提交

时间:2011-03-08 16:48:00

标签: jquery forms submit form-submit

LLO, 我有一个有两个提交按钮的表单:一个接受,一个取消:

<p>
    <input type="submit" name="accio" value="accept" class="default" />
    <input type="submit" name="accio" value="cancel" class="cancel" />
</p>

我想使用键盘使用jQuery提交表单:

$(document).ready(function() {
    $("input[type=text]").focus();
    $("input[type=text]").keydown(function(e) {
            if ((e.keycode && e.keycode == 13) || (e.which && e.which == 13)) {
                $(".default").submit();
            }
            if ((e.keycode && e.keycode == 27) || (e.which && e.which == 27)) {
                $(".cancel").submit();
            }
        });
});

我希望参数accio包含接受或取消,具体取决于按下的键(我在服务器中处理)...它适用于Firefox,但不适用于IE或Chrome。哪里是我的错?

更新

关注@ Sime,我得到了以下代码:

$(document).ready(function() {
    $("input:text").focus();
    $("input:text").keydown(function(e) {
            if (e.which == 13) {
                $("#default").submit();
            }
            if (e.which == 27) {
                $("#cancel").submit();
            }
        });
});

但它仍然无效......我认为这与我提交表单的方式有关...我不能在“input:submit”上调用submit方法,并期望将正确的值传递给控制器?

2 个答案:

答案 0 :(得分:3)

试试这个:

$("input[type=text]").keydown(function(e) {
     if ((e.keycode && e.keycode == 13) || (e.which && e.which == 13)) {
        $(".default")[0].click();
     }
     if ((e.keycode && e.keycode == 27) || (e.which && e.which == 27)) {
         $(".cancel")[0].click();
     }
});
你可以设法更好地识别按钮。

$("p input.cancel")

<强>更新

         

$(document).ready(function() {
    $("input:text").focus();
    $("input:text").keydown(function(e) {
            if (e.which == 13) {
                $("#default")[0].click();
            }
            if (e.which == 27) {
                $("#cancel")[0].click();
            }
        });
});

see this example

更新II

这个代码功能在IE6 +中很好,校正在stopPropagation

$('input[type="text"]').keydown(function(ev) {

  if (ev.which == 13 || ev.which == 27) {

      ev.stopPropagation();
      if (ev.which == 13)
         $("#default")[0].click();

     if (ev.which == 27)
         $("#cancel")[0].click();

      return false
  }

});

答案 1 :(得分:0)

尝试以下方法:

$( '#myForm' ).submit();
$( '#mySubmitButton' ).click();