进一步解决我的问题 -jQuery 提交验证,最后有模式对话框?
看起来表单根本不会使用 jQuery 提交。这是我的非常简化的代码:
<script type="text/javascript">
$(document).ready(function(){
$(document).click(function() {
$('#inputform').submit();
});
$("#inputform").submit(function() {
alert('test');
return true;
});
});
</script>
<form method="POST" action="<?php echo CURRENT_PAGE ?>" id="inputform">
<button type="submit" name="submit" id="submit">Submit form</button>
</form>
单击正文会显示“测试”警报,但不会提交表单。此外,关闭警报框后,再次单击时它不会重新出现。
只需单击提交按钮本身就会显示警报,然后按预期提交表单。
很抱歉(我知道)这是一个非常愚蠢的问题,但我在这里不知所措。泰!
问题是您将提交按钮命名为“提交”。将其更改为其他任何内容,它就会起作用。 (同时更改id
,最好保持它们相同,尤其是因为一些浏览器问题.)
原因:表单元素有一个名为submit
您可以调用该函数来提交它们。 (当你调用时,jQuery 在幕后使用了这个submit
在 jQuery 实例上。)但是 Form 元素also使用字段名称接收表单中每个字段的属性,因此如果您有一个名为“提交”的字段,它覆盖 the submit
函数,这意味着您无法以编程方式提交表单。
工作示例:实时复制 | 直播源
<script type="text/javascript">
$(document).ready(function(){
$(document).click(function() {
$('#inputform').submit();
});
$("#inputform").submit(function() {
alert('test');
return true;
});
});
</script>
<form method="GET" action="http://jsbin.com/uwuzon" id="inputform">
<input type="text" name="foo" value="bar">
<button type="submit" name="someOtherName" id="someOtherName">Submit form</button>
</form>
(显着的变化是name="someOtherName" id="someOtherName"
部分。其他更改[更改表单的操作和方法]只是为了在 JSbin 上工作。)
旁注:你不必return true;
在你的submit
事件处理程序以允许表单提交。你只需要not return false;
. :-)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)