如何让这个表格只在应该提交的时候提交

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() 处理程序中。这是完全没有必要的,会延迟插件的初始化,并且会干扰内置的提交处理程序。

您所展示的任何内容都无法解释其他表单如何/为什么会受到影响。

【讨论】:

以上是关于如何让这个表格只在应该提交的时候提交的主要内容,如果未能解决你的问题,请参考以下文章

如何在提交按钮内制作链接?

联系表格 7 无法通过 AJAX 提交,因此重定向到 404

html中提交表单后如何在同一页面上显示表格?

表格未正确提交

限时后自动提交谷歌表格

在 PHP 中提交表单时如何保留输入字段中的值?