【问题标题】:Jquery validation on submit-handler missing form data提交处理程序缺少表单数据的 Jquery 验证
【发布时间】:2023-06-23 06:04:02
【问题描述】:

我想在表单验证通过时调用一些 ajax。问题是我的表单数据似乎在提交处理程序中丢失了。

这是我的代码:

$(function(){

     $("#ticketSubmit").validate({

          rules:{

               name:{
                    required: true
               }
         }

         submitHandler:function(form){

               var dataString=$(this).serialize();

               alert(dataString);

               return false;

         }

     });

)};

我已经创建了这个 jsfiddle:

http://jsfiddle.net/rJ5pC/5/

【问题讨论】:

    标签: jquery validation submit


    【解决方案1】:

    您有许多格式问题,$(this) 在您的示例中不起作用的原因也是因为 $(this) 是对您的验证器而不是表单的引用。你可以使用 this.currentForm 虽然没问题。

    $(function () {
        $("#ticketSubmit").validate({
            rules: {
                name: {
                    required: true
                }
            },
            submitHandler: function (form) {
                var dataString = $(this.currentForm).serialize();
                alert(dataString);
                return false;
            }
        });
    });
    

    http://jsfiddle.net/rJ5pC/9/

    【讨论】:

      【解决方案2】:

      好的,所以我必须使用:

      var dataString=$(form).serialize();

      为什么这不起作用:

      var dataString=$(this).serialize();

      【讨论】:

      • $(this) 指的是验证对象,而不是表单。
      【解决方案3】:

      rulessubmitHandler 属性之间缺少逗号。

      $(function () {
          $("#ticketSubmit").validate({
              rules: {
                  name: {
                      required: true
                  }
              },
              submitHandler: function (form) {
                  var dataString = $(this).serialize();
                  alert(dataString);
                  return false;
              }
          });
          )
      };
      

      http://jsfiddle.net/ce29u/

      【讨论】:

      • 这是一个错字,我的原始代码有逗号,使用 $(this) 时我没有得到任何表单数据