Перед отправкой формы программно - PullRequest
1 голос
/ 28 ноября 2011

В jQuery-Mobile я отправляю форму программно и хочу захватить событие отправки, чтобы выполнить некоторые проверки раньше.Я уже попробовал следующее решение, предоставленное в других вопросах о jQuery:

$(document).ready(function(){
  $('#my_form').bind('submit', function() {
    alert('before submit');

    ...

  });
});

Но я не могу выполнить функцию и вывести предупреждение.Кто-нибудь знает какой-либо другой способ добиться этого?

Моя форма выглядит примерно так:

<form id="my_form" method="POST" action="..." data-theme="b">

И способ, которым я называю это программно, из другого раздела той же страницы, похож на этот:

<input type="submit" onclick="document.forms['my_form'].submit(); return false;" value="Submit" data-theme="b"/>

Заранее благодарю за помощь.

Ответы [ 4 ]

4 голосов
/ 28 ноября 2011

Обработчик отправки формы НЕ выполняется, когда вы отправляете форму программно.

ПРИМЕЧАНИЕ. НЕ используйте кнопку отправки для программной отправки формы. Вместо этого используйте кнопку или разрешите обработку отправки с кнопки отправки, т.е.

<input type="button" onclick="document.forms['my_form'].submit()" value="Submit another form" data-theme="b"/>

(вышеприведенное неверно в любом случае, поскольку для формы требуется ИМЯ, а не просто идентификатор)

Итак

<input type="button" onclick="document.forms['my_form_NAME'].submit()" value="Submit another form" data-theme="b"/>

OR

<input type="button" onclick="document.getElementById('my_form_ID').submit()" value="Submit another form" data-theme="b"/>

ИЛИ, поскольку у вас есть jQuery:

<input type="button" onclick="$('#my_form_ID'].submit()" value="Submit another form" data-theme="b"/>

ИЛИ если вы можете поставить кнопку в форме (лучший способ):

<input type="submit" value="Submit THIS form" data-theme="b"/>

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

<form id="actualForm">...
.
.

</form>


<input type="button" id="subbut" value="Submit another form on this page" data-theme="b"/>

$(document).ready(function(){
  $('#subbut').bind('click', function() {
    alert('before submit');

    ...

    $("#actualForm").submit();
  });
});

Если есть жестко закодированное встроенное поведение, которое вы не можете изменить, используйте jQuery, чтобы удалить его тоже

Как удалить встроенный атрибут onclick с помощью букмарклета?

$(document).ready(function(){
  $('#subbut').attr('onclick',""); // or $('#subbut').onclick=null;
  $('#subbut').bind('click', function() {
    alert('before submit');

    ...

    $("#actualForm").submit();
  });
});
0 голосов
/ 28 ноября 2011

Поскольку вы используете jquery, вы можете найти метод и примеры здесь:

Подтвердить

0 голосов
/ 28 ноября 2011

Изменение возвращаемого значения onClick на TRUE делает работу:

<input type="submit" onclick="document.forms['my_form'].submit(); return ***true***;" vakue="Submit" data-theme="b"/>
0 голосов
/ 28 ноября 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...