как сделать что-то перед отправкой формы?

Например, у меня есть HTML-форма с несколькими кнопками ввода,

 <form action="/index.php" method="post">
 <input type="hidden" name="hf" />
 <input type="submit" id="apply_action" name="action" value="Apply">
 <input type="submit" id="cancel_action" name="action" value="Cancel">

это текущая структура большого веб-проекта. После нажатия кнопки «Отправить» «Применить» она сопоставляется с определенной функцией PHP на веб-сервере, а затем возвращает определенный код HTML; конечно, после нажатия кнопки «Отмена» она будет сопоставлена ​​с другой функцией PHP.

Теперь я хотел бы добавить кое-что перед исходным действием отправки, когда нажимается «Применить». Например: я хотел бы добавить предупреждение javascript («привет») до того, как исходное действие отправки будет отправлено на сервер? Я не знаю, как добиться этого с помощью Jquery? Прежде всего, для этой формы есть два действия отправки: value='Apply' или 'Cancel', мне нужно различать действие; Во-вторых, после предупреждения('привет') мне все еще нужно выполнить исходную форму action='index.php'. Есть ли функция jquery для этой цели? Спасибо!


person WilliamLou    schedule 31.07.2010    source источник


Ответы (2)


Похоже, вы хотите привязать функцию к событию submit формы. См. http://api.jquery.com/submit/.

Чтобы соответствовать вашему запросу, это должно работать:

$('form').submit(function(){
  alert('hello');
  return true;
  });

Приложение:

Хорошо, поскольку у вас есть две кнопки отправки, вам нужно использовать событие click.

$(document).ready(function(){
  $('input').click(function(ev){
   alert(ev.target.id);//this is how you will differentiate between the two buttons.
      //or, you could bind a separate click event to each one
   if(ev.target.id=="cancel_action"){ /* etc.. */ }
   else{ /* etc.. */ }
   });
 });

В любом случае форма будет отправлена ​​по клику. Как заметил Франсиско Сото, возврат false предотвратит отправку любым методом. Возврат true (или не указание возвращаемого значения) продолжит отправку формы.

person JAL    schedule 31.07.2010
comment
прежде всего, для этой формы есть два действия отправки: value='Apply' или 'Cancel', мне нужно различать действие; во-вторых, после предупреждения ('привет') мне все еще нужно, чтобы исходная форма action='index.php' была выполнена - person WilliamLou; 31.07.2010
comment
Или верните false, если вы хотите предотвратить отправку формы. - person Francisco Soto; 31.07.2010
comment
Что касается вашей второй заметки, форма, как и прежде, подчиняется указанному действию. Вы читали документы для отправки или пробовали этот код? - person JAL; 31.07.2010
comment
Во всяком случае, я добавил способ различать кнопки, так как это правильно, вы не можете сделать это, привязав отправку. - person JAL; 31.07.2010

Вы должны использовать метод .click() для кнопки.

$('#apply_action').click(
   function(){
    // do your stuff here..
   }
);
person Gabriele Petrioli    schedule 31.07.2010