我无法使.submit()jquery函数正常工作我已将我的代码中的所有内容归结为:
<form action="/server/addserver.php" method="post" accept-charset="utf-8" id="mainform"><input type="text" name="test" value="" /><input type="submit" name="submit" value="Submit" id="submitbutton" /></form>
<script type="text/javascript">
$("#submitbutton").click(
function(){
$("#mainform").submit();
return false;
});
</script>
对我来说这应该是1 - 停止按钮的默认行为然后2 - 手动提交表单。
如果换掉.submit();用.hide();这样可行。这不是首次运行某些ajax验证后手动提交表单的首选方法吗?
由于
答案 0 :(得分:4)
你可以这样做:
$(function () {
$('#mainform').submit(function () {
if (isFormValid()) { // do your validation
return true;
}
return false;
});
});
这将在提交表单时运行(只需使用普通的<input type="submit" />
按钮)。在此处返回false将阻止页面发布。
如果您想将事件绑定到按钮,请尝试如下:
$(function () {
$('#submitbutton').click(function () {
if (isFormValid()) { // do your validation
$('#mainform').submit();
}
return false;
});
});
答案 1 :(得分:2)
首先,我认为你应该注意几件事情:
无论何时,只要您想要将事件绑定到DOM元素,就应该确保页面已完全加载。如果有疑问,请将您的代码包装在
$(document).ready(function() { /* code to execute after page load */ });中。
此外,如果输入[type =“submit”]元素的 name 属性,则 .trigger(“submit”)方法不起作用设置为“提交”值。由于 .submit()被调用而没有参数是 .trigger('submit')的快捷方式,然后你随时调用JQuery的 .submit()对元素的方法,你要确保并指定输入的名称除了“提交”以外的其他内容。
现在,回答你的问题;首先关于返回 false 是否是手动提交表单的首选方式,答案通常是否定的。原因是返回 false 会做三件事,而你通常不想做所有这些事情。它会阻止事件的默认浏览器行为,它还会阻止事件冒泡,并立即返回,退出该函数。通常,您可能只想要 event.preventDefault()或 event.stopPropagation() ...甚至取消绑定该事件。在这种情况下,在我看来,返回错误而不是调用适当的晚间方法似乎混淆了你的代码的意图。
如果您还需要阻止 submit 事件的默认浏览器操作,您可以使用JQuery的备用触发器方法:
$('#mainform').triggerHandler('submit');。 但是,在没有错误的情况下,验证器方法本身可能应该是您调用 form.submit()的位置。它也应该是你处理表单提交的地方,因为它是守门人,可以这么说。
总而言之,如果你要使用Validator插件,你应该遵循它自己的约定。确保表单通过将 name =“submit”添加到您的提交按钮来执行默认提交,然后删除您拥有的所有JQuery代码并将其替换为Validator文档中的此示例:
$("#mainform").validate({ submitHandler: function(form) { form.submit(); // Don't use a JQuery selector here, just "form" } });
这应该允许插件按预期运行。当然,最后一步是添加验证规则。我希望有所帮助。如果仍然遇到事件问题,请尝试使用JQuery的Event对象方法在控制台上进行调试。