После редактирования OP
Вам не нужно предотвращать дефолт по клику .... только отправка ... вот вам рабочий код:
1011 *
*
jQuery(document).ready(function(){
$('form.example').submit(function(event){
event.preventDefault();
alert("form submitted");
// stop submission so we don't leave this page
});
$('form.example button').click(function() {
alert("button clicked");
});
});
старый ответ
Вы можете просто поместить ваши обработчики .click()
и .submit()
последовательно, и они не должны отменяться. У вас есть синтаксических ошибок в вашем псевдокоде .... может быть, это вызывает проблемы?
Другая потенциальная проблема заключается в том, что $("form button")
нацелены на теги HTML <button>
. Если вы используете <input type="button" />
, вы должны использовать $("form:button")
и учтите, что <input type="submit" />
- это , а не кнопка. В любом случае, я предполагаю, что вы на самом деле используете теги <button>
.
Обычно return false
используется внутри .submit(function() { ... });
. Это останавливает отправку формы через HTML. s**[topPropagation][6]**
очень отличается. Это связано с остановкой событий, «всплывающих» перед родителями элементов ....... Но я не понимаю, как это повлияет на ваше дело.
Если вы действительно отправляете HTML, сначала добавьте обработчик .click()
, так как при правильной отправке HTML вы покинете страницу.
Если вы используете return false
внутри .submit()
, форма не будет отправлена через HTML, и вам придется обрабатывать отправку с помощью jQuery / Javascript / AJAX.
В любом случае, здесь показана демонстрация событий .click()
и .submit()
, запускаемых последовательно ... код ниже:
$(function() {
$('form button').click(function() {
// Do click button stuff here.
});
$('form').submit(function(){
// Do for submission stuff here
// ...
// stop submission so we don't leave this page
// Leave this line out, if you do want to leave
// the page and submit the form, but then the results of your
// click event will probably be hard for the user to see.
return false;
});
});
Выше приведено обоих обработчиков со следующим HTML:
<button type="submit">Submit</button>
Как примечание, я предполагаю, что вы использовали псевдокод, но даже тогда его гораздо легче читать, и вы уверены, что вы не пишете синтаксические ошибки, если используете:
$('form').submit(function() { /*submits form*/ });
$('form button').click(function() { /*does some action*/ });