2011-03-10 17 views
30

我正在嘗試使用jquery validate插件來驗證表單並提交一個ajax請求的內容。

此代碼位於我的文檔的頭部。

$(document).ready(function() { 
    $('#contact-form').validate({submitHandler: function(form) { 
     $(form).ajaxSubmit(); 
     contactSuccess() ; 
     } 
    }); 
}); 

確認工作。 但是,提交通常是:提交時,頁面重新加載。 當然,對於沒有啓用js的瀏覽器,我有非js的回退行爲。但我希望獲得更平滑的用戶體驗。

我的螢火看到的錯誤是: $(形式).ajaxSubmit不是一個函數

我應該怎麼做是錯在這裏幹什麼?

+3

包括jquery表單插件嗎? (http://jquery.malsup.com/form/#getting-started) – yoavmatchulsky 2011-03-10 21:11:22

+0

您確定要正確加載庫嗎? – treeface 2011-03-10 21:12:04

回答

61

我猜你沒有包含jQuery表單插件。 ajaxSubmit不是一個核心的jQuery功能,我相信。

事情是這樣的:http://jquery.malsup.com/form/

+3

死對頭!感謝您的快速回答......我只是忘了將表單插件包含在HTML文檔的頭部。衛生署! – 2011-03-10 21:19:43

+0

Duuuh,這麼多的腳本來跟蹤!感謝你的回答! – SlickRemix 2014-09-10 22:47:42

+0

感謝你的回覆非常有幫助 – Mimouni 2016-04-20 16:03:06

0

我想你想要做的$(本).ajaxSubmit(); ...還有,注意一下從function documentation的例子說:

// attach handler to form's submit event 
$('#myFormId').submit(function() { 
    // submit the form 
    $(this).ajaxSubmit(); 
    // return false to prevent normal browser submit and page navigation 
    return false; 
}); 

- 即它說,你需要返回FALSE;阻止瀏覽器正常提交。

-4
$(form).ajaxSubmit(); 

觸發另一個導致遞歸的驗證。嘗試將其更改爲

form.ajaxSubmit(); 
+3

什麼?甚至不接近真實......爲什麼會觸發任何類型的遞歸?! – mbinette 2012-11-06 03:56:29

1

嘗試ajaxsubmit庫。 它做ajax submition以及通過ajax驗證。

另外配置非常靈活,可以支持任何種類的用戶界面。

Live demo available帶有js,css和html的例子。

<form action="postpage.php" method="POST" id="postForm" > 

<div id="flash_success"></div> 

name: 
<input type="text" name="name" /> 
password: 
<input type="password" name="pass" /> 
Email: 
<input type="text" name="email" /> 

<input type="submit" name="btn" value="Submit" /> 
</form> 

<script> 
    var options = { 
     target:  '#flash_success', // your response show in this ID 
     beforeSubmit: callValidationFunction, 
     success:  YourResponseFunction 
    }; 
    // bind to the form's submit event 
     jQuery('#postForm').submit(function() { 
      jQuery(this).ajaxSubmit(options); 
      return false; 
     }); 


}); 
function callValidationFunction() 
{ 
// validation code for your form HERE 
} 

function YourResponseFunction(responseText, statusText, xhr, $form) 
{ 
    if(responseText=='success') 
    { 
     $('#flash_success').html('Your Success Message Here!!!'); 
     $('body,html').animate({scrollTop: 0}, 800); 

    }else 
    { 
     $('#flash_success').html('Error Msg Here'); 

    } 
} 
</script> 
1

阿賈克斯通過使用jQuery AJAX方法首先包括圖書館的jquery.js和jQuery-form.js然後創建HTML表單提交形式進行刷新頁面這是新的功能,所以你必須添加其他庫文件後jQuery lib

<script src="http://malsup.github.com/jquery.form.js"></script> 

它會工作..我測試了..希望它會爲你工作..

2

搜索:

$(document).ready(function() { 
    $('#contact-form').validate({submitHandler: function(form) { 
     var data = $('#contact-form').serialize(); 
     $.post(
       'url_request', 
       {data: data}, 
       function(response){ 
        console.log(response); 
       } 
     ); 
     } 
    }); 
}); 
+1

爲了提高你的文章的質量,請包括你的文章如何/爲什麼會解決問題。 – 2012-10-06 06:36:11

5

1

Drupal的8

的Drupal 8不包括JS-庫頁全自動。所以很可能如果你遇到這個錯誤,你需要將'core/jquery.form'庫附加到你的頁面(或表單)。給你的渲染數組添加如下內容:

$form['#attached']['library'][] = 'core/jquery.form'; 
相關問題