Как перехватить событие onclick - PullRequest
2 голосов
/ 02 октября 2009

Я бы хотел перехватить событие onclick кнопки (не отправлять), прежде чем страница вернется назад после щелчка.

У меня возникли проблемы:

$(document).ready() { function() {
    function validate() { 
        ...
    }

    var oldOnClick = $("input[value=OK]").attr("onclick");
    $("input[value=OK]").attr("onclick", "if(!validate()) { return false; }" + oldOnClick));
});

Ответы [ 4 ]

7 голосов
/ 02 октября 2009

Если вы все еще хотите обрабатывать событие нажатия кнопки вместо события отправки формы, как все предлагалось, вы можете сделать что-то вроде этого, используя анонимную функцию, чтобы вызвать вашу функцию oldOnClick, сохранив контекст и аргумент события:

$(document).ready(function () {
  function validate() { 
    // ...
  }

  var oldOnClick = $("input[value=OK]").get(0).onclick;
  $("input[value=OK]").click(function (e) {
    if(!validate()) {
      return false;
    }
    oldOnClick.call(this, e); // enforce the context and event argument
  });
});
4 голосов
/ 02 октября 2009

Вместо того, чтобы пытаться перехватить событие onClick, вам следует использовать событие отправки .

Почему? Простые, не все формы отправляются нажатием кнопки, как насчет вкладки, ввода и т. Д.?

$("form").submit(function() { // do validation/stuff here }); добьется цели.

Вы можете return false; остановить отправку формы или return true;, если хотите пропустить ее. Выполните проверку в самом .submit.

0 голосов
/ 02 октября 2009
e.preventDefault();

Более конкретно, вам нужно сделать это

$("#Your_form_id").submit(function(e) {
e.preventDefault();
// your code
});

Другой способ сделать это, как говорит Джейк, вернуть false после выполнения некоторой работы ... т.е.:

$("#Your_form_id").submit(function() {
// your code
return false;
});

См. Документацию Jquery по Отправить и События в целом

0 голосов
/ 02 октября 2009

OnSubmit вызывается непосредственно перед отправкой формы. Вы даже можете отменить мероприятие, чтобы форма не была отправлена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...