Клавиатура отправить через JQuery - PullRequest
1 голос
/ 08 марта 2011

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's я получил следующий код:

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

но он все еще не работает ... Я думаю, что это так, как я отправляю форму ... Я не могу вызвать метод submit для "input: submit" и ожидать, что правильные значения будут переданы в контроллер?

Ответы [ 2 ]

3 голосов
/ 08 марта 2011

попробуйте это:

$("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();
            }
        });
});

см. Этот пример

ОБНОВЛЕНИЕ 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
  }

});
0 голосов
/ 08 марта 2011

Попробуйте следующее:

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