2011-11-28 10 views
1

В 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"/> 

Спасибо заранее за ваш Помогите.

+0

ли это делать орфографические ошибки здесь только то, что вы видите значение * vakue * в вашем '<входной тип = "submit" ... '? – diceler

+0

Да, это всего лишь опечатка. В моем исходном коде это правильно, и форма правильно отправлена. – Pablo

ответ

4

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

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

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

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

Так

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

ИЛИ

<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, чтобы удалить его слишком

How can I remove an inline onclick attribute with a bookmarklet?

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

    ... 

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

На самом деле это работает на меня. Большое спасибо. – Pablo

+0

Я хотел бы спросить вас, знаете ли вы другой способ сделать это, не изменяя код отправки? Разве нет другого способа только «захватить» событие отправки или что-то подобное? Спасибо. – Pablo

+0

Зависит. Если код представления WRONG, то вам нужно заменить код - см. Обновление – mplungjan

0
+0

Дело в том, что я бы предпочел не добавлять дополнительные файлы, если это возможно, так как это мобильное приложение. Для его оправдания не будет большой проверки. – Pablo

0

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

Submit validation

+0

Я уже пробовал раньше с '$ ('# my_form'). Submit (function() {...});' но это не работает. – Pablo

+0

Что значит, что это не работает? Если вы вернете false в анонимной функции, форма не будет отправлена. Если вы вернете true, это будет –

+0

Я имею в виду, что анонимная функция даже не выполняется с этим кодом. – Pablo

-1

Изменение возвращаемого значения OnClick к TRUE выполняет задание:

<input type="submit" onclick="document.forms['my_form'].submit(); return ***true***;" vakue="Submit" data-theme="b"/> 
+0

Он все еще игнорирует эту функцию для меня. – Pablo

+0

Неверная форма - и это очень плохая практика, чтобы отправить форму программно из ее собственной кнопки отправки или onsubmit – mplungjan

+0

. Попробуйте эту ссылку: http://jsfiddle.net/88pawankumarjha/m68x3/ –

Смежные вопросы