在以编程方式提交表单之前

时间:2011-11-28 10:03:17

标签: javascript jquery jquery-mobile

在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 个答案:

答案 0 :(得分:4)

当您以编程方式提交表单时,不会执行表单的提交处理程序。

注意:请勿使用提交按钮以编程方式提交表单。而是使用按钮或允许处理提交按钮的提交,即

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

(以上情况不正确,因为它需要表格有一个NAME,而不仅仅是一个ID)

所以

<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将其删除

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();
  });
});

答案 1 :(得分:0)

答案 2 :(得分:0)

由于您使用了jquery,因此可以在此处找到方法和示例:

Submit validation

答案 3 :(得分:-1)

将onClick的返回值更改为TRUE可以完成作业:

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