如何让这个表格只在应该提交的时候提交
Posted
技术标签:
【中文标题】如何让这个表格只在应该提交的时候提交【英文标题】:How to get this form to submit only when it should 【发布时间】:2017-04-21 17:44:51 【问题描述】:可能是一个愚蠢的问题,但我觉得这真的很棘手:
我正在尝试仅在需要时才提交表单。 每次我在页面中提交任何其他表单时,都会执行以下脚本。
我怎样才能让它不执行,除非它被要求?
$('#nurturing_pop_up_form').validate(
rules:
emailaddress:
required: true,
email: true
,
board_meeting:
required:
depends: function ()
return $('input[name=in_12_months]').is(':checked')==false && $('input[name=in_6_months]').is(':checked')==false
,
submitHandler: function(form)
var url_remind = 'http://example.com';
var data_remind = $('#nurturing_pop_up_form').serializeArray();
$.ajax(
type: "POST",
url: url_remind,
data: data_remind,
success: function()
$('.nurturing_pop_up').fadeOut();
);
);
我应该添加这样的东西吗?
$('#nurturing_pop_up_form').submit(function(e)
e.preventDefault();
$('#nurturing_pop_up_form').validate(
rules:
//the rest like above
非常感谢您的帮助!
【问题讨论】:
您没有向我们展示任何可以证明您所描述的内容。构建一个包含相关 html 标记的完整演示。 【参考方案1】:我正在尝试仅在需要时提交表单。
此过程由 jQuery Validate自动处理。您应该不做任何特别的事情来强制这样做。
每当我在页面中提交任何其他表单时,都会执行以下脚本。
“下面”的脚本.validate(...)
只是插件的初始化例程。在您显示的代码中,您仅使用id="nurturing_pop_up_form"
初始化一个表单。页面上的其他表单将完全不受影响。也许您的 HTML 无效、.validate()
的其他实例、其他提交处理程序或您未向我们展示的一些错误代码。
我怎样才能让它不执行,除非它被要求?
我认为您的问题是基于对正在发生的事情的错误假设。 .validate()
应该只在页面加载(DOM 就绪处理程序)时调用一次,以初始化表单上的插件。然后插件自动捕获点击、验证数据并处理提交。
我应该添加这样的东西吗?
$('#nurturing_pop_up_form').submit(function(e)
e.preventDefault();
$('#nurturing_pop_up_form').validate(...
绝对不是。您应该永远不要将.validate()
放在同一表单的.submit()
处理程序中。这是完全没有必要的,会延迟插件的初始化,并且会干扰内置的提交处理程序。
您所展示的任何内容都无法解释其他表单如何/为什么会受到影响。
【讨论】:
以上是关于如何让这个表格只在应该提交的时候提交的主要内容,如果未能解决你的问题,请参考以下文章