【问题标题】:jQuery: how to include validation in the ajaxForm function? [duplicate]jQuery:如何在 ajaxForm 函数中包含验证? [复制]
【发布时间】:2013-02-25 16:00:56
【问题描述】:

已询问This question,但未确认答案。我试过了,但没有用。所以我想再次问同样的问题(这样合适吗?如果不合适,请告诉我该怎么做)。

我有一个需要验证的表单,然后使用 ajaxForm 提交(该表单包含图像和文件数据,因此使用.serialize() 提交将不起作用)。以下为详细内容:

HTML:

<form id="myForm" action="..." method="post" enctype="multipart/form-data">
  ...
  <input type="file" name="image" /><br />
  <input type="file" name="file" /><br />
  ...
</form>

jQuery:

$(document).ready(function() {

  $("#myForm").ajaxForm ({

    beforeSubmit: function() {
      $("#myForm").validate({
        onkeyup:false,
        rules: {
          ...
        },
        messages: {
          ...
        },
      });
    },

    success: function(returnData) {
      $('#content').html(returnData);
    }

  });

});

ajaxForm 部分没问题。但是表单只是简单地提交而没有验证。

【问题讨论】:

    标签: jquery jquery-validate ajaxform


    【解决方案1】:

    .validate() is used for initializing the plugin on DOM ready,所以把它拉到另一个函数之外。

    初始化准备好 DOM 中的两个插件,然后利用任何适当的内置回调函数...

    您无需担心创建任何新的submit 处理程序或click 处理程序函数,因为这两个插件已经自动捕获submit 事件。

    工作演示:http://jsfiddle.net/MF26D/

    重新排列您的代码,使其更像这样:

    $(document).ready(function () {
    
        $("#myForm").validate({ // initialize the plugin
            // any other options,
            onkeyup: false,
            rules: {
                //...
            },
            messages: {
                //...
            }
        });
    
        $("#myForm").ajaxForm({ // initialize the plugin
            // any other options,
            beforeSubmit: function () {
                return $("#myForm").valid(); // TRUE when form is valid, FALSE will cancel submit
            },
            success: function (returnData) {
                $('#content').html(returnData);
            }
        });
    
    });
    

    【讨论】:

    • 哇!该代码立即生效。谢谢一百万,斯帕基。你救了我的命。
    【解决方案2】:

    试试这个

       $(document).ready(function() {
    
          $("#myForm").ajaxForm ({
    
            beforeSubmit: function() {
               if (!$("#myform").valid())
                        return;
            },
    
            success: function(returnData) {
              $('#content').html(returnData);
            }
    
          });
    
        });
    

    【讨论】:

    • 这似乎与原始解决方案非常相似。如何安排.valid()函数?
    【解决方案3】:

    可以在提交处理程序中调用表单插件:

    $("#myForm").submit(function(e){
      e.preventaDefault();
    
       var isValid=/* run your validation code that determines true or false*/
    
       if( isValid){
         $(this).ajaxForm({/* plugin options*/})
      }
    
    })
    

    【讨论】:

    • 对不起,我对 jQuery 不是很熟悉。如何通过validation()函数设置变量isValid的值?谢谢。
    • 您是否使用插件进行验证?如果是这样,什么插件(提供文档链接)。
    • 我认为您在.submit 旁边缺少(function
    • @Sparky 哎呀..谢谢
    • 我正在使用 jzaefferer 的插件:github.com/jzaefferer/jquery-validation.
    猜你喜欢
    • 2011-01-25
    • 2019-04-13
    • 2013-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-27
    • 2017-03-06
    相关资源
    最近更新 更多