2014-03-24 19 views
0

我正在构建一个使用jquery mobile的小应用程序,并使用jqueryvalidate http://jqueryvalidation.org/进行表单验证。我设法使用ajax进行工作,但只要我将它移入submitHandler:function(form),它仍然“有效”,但我必须单击“提交”两次以使其正常工作?请帮我困惑!

//the validation stuff 
$().ready(function() {  
// validate new id form 
$("#addId").validate({ 
    errorPlacement: function(error, element) { 
     error.insertAfter(element.parent()); // <- make sure the error message appears after parent element (after textbox!) 
         }, 
     rules: { 
      idDesc: "required", 
      }, 
     messages: { 
      idDesc: "Please enter a valid description", 
       }, 

     submitHandler: function(form) { 
      $('#submit').click(function() 
      { 
           $('#addCustId').popup('close'); 
           $.post("Customer_AddNewCustomerId.php", $("#addId").serialize(), function(response) 
             { 
              LoadCustomerIdentificationType(); 
             }); 
            }); 
          } 
        }); //end validate 
       }); // end function 

谢谢:)

回答

1

这是完全错误的......

submitHandler: function(form) { 
    $('#submit').click(function() { // <-- causing your double-click situation 
     .... 
     $.post(....); 
    }); 
} 

As per the documentation for the submitHandler callback function

“回调处理实际当表单是有效的提交。获取表单作为唯一参数。替换默认提交。正确的地方通过Ajax提交表单被验证后,”

换句话说,它只大火被点击的有效形式按钮时,该插件会自动处理click,使包装内的功能另一个click处理程序是没有意义的,适得其反。

只是这样做......

submitHandler: function(form) { 
    .... 
    $.post(....); 
    return false; // not necessary, but it reminds me that the default is blocked 
} 

,如果你愿意,你可以离开了return false;线。我总是把它(没有伤害任何东西),因为它提醒我认为表单上的默认action不会发生。

+0

啊我看到这让人更有意义!非常感谢,你的回答完美无缺:) – Janey