2012-12-10 22 views
1

插件,但使用起來一起莫名其妙我。jQuery的 - 使用驗證與我都用了的驗證插件和AJAX形式插件巨大的成功AJAX形式插件

如果我使用驗證插件進行驗證,然後在成功發佈AJAX形式,沒有任何反應。從字面上看。即使在Firebug中,AJAX插件似乎也沒有做任何事情。

如果我嘗試它周圍的其他方法,在這裏由我的beforeCallback來然後調用jQuery的驗證插件......沒有驗證已完成,但表單提交頁面。

所以我可以讓每個插件工作,但不能在一起。

有沒有人有任何想法?我描述了第一條路線用在這裏,像這樣:

function sendFormVacancy() { 

    alert("submit"); // This does get called, but the code below doesn't submit the form. 

    var options = { 

     beforeSubmit: validateRequest, 
     target:  "#messages", 
     clearForm: true, 
     type:  "POST", 
     url:  "/form-vacancy.php", 

     success: function() { 
      $('#messages').html("<p><?php _e("Application sent!", "tokheim"); ?></p>").css('color', 'green'); 
     }, 

     error: function() { 
      $('#messages').html("<p><?php _e("Sorry, an error occurred.", "tokheim"); ?></p>").css('color', 'red'); 
     } 

    }; 

    $("#static-form-vacancy").ajaxForm(options); 

} 

$("#static-form-vacancy").validate({ 

    rules: { 

     fieldfile:"required", 
     fieldtitle:"required", 
     fieldfirstname:{ required: true }, 
     fieldlastname:"required", 
     fieldaddress1:"required", 
     fieldcity:"required", 
     fieldcountry:"required", 
     fieldphone:"required", 
     fieldemail:{ required: true, email: true }, 
     fieldcontactmethod:"required", 
     fieldrelocate:"required", 
     fieldcomments:"required" 

    }, 

    messages: { 

     fieldfile:"<?php _e("Select a file to upload", "tokheim"); ?>", 
     fieldtitle:"<?php _e("Select your title", "tokheim"); ?>", 
     fieldfirstname:{ required:"<?php _e("Enter your firstname", "tokheim"); ?>" }, 
     fieldlastname:"<?php _e("Enter your lastname", "tokheim"); ?>", 
     fieldaddress1:"<?php _e("Enter your address", "tokheim"); ?>", 
     fieldcity:"<?php _e("Enter your city", "tokheim"); ?>", 
     fieldcountry:"<?php _e("Enter your country", "tokheim"); ?>", 
     fieldphone:"<?php _e("Enter your phone number", "tokheim"); ?>", 
     fieldemail:{ required:"<?php _e("Please enter an email address", "tokheim"); ?>", email:"<?php _e("Email is not valid", "tokheim"); ?>" }, 
     fieldcontactmethod:"<?php _e("Select an option", "tokheim"); ?>", 
     fieldrelocate:"<?php _e("Select an option", "tokheim"); ?>", 
     fieldcomments:"<?php _e("Enter your comments", "tokheim"); ?>" 

    }, 

    submitHandler: function() { 
     sendFormVacancy(); 
    } 

}); 

jQuery的驗證我使用的插件是: http://bassistance.de/jquery-plugins/jquery-plugin-validation/

的AJAX表單提交的腳本,我使用的是: http://malsup.com/jquery/form/

現在,我可以簡單地用AJAX提交這個'手動'的方式......但是,我使用這個插件的原因是,它通過AJAX處理文件上傳,這是我需要的功能。

任何幫助將不勝感激。我正在拉我的頭髮!

難道是各插件以某種方式結合的形式,並鎖定了其他的呢?

謝謝, 邁克爾。在給ajaxForm的beforeSubmit處理

回答

1

呼叫.valid()。

$('#myForm').validate({ 
    rules: { 
     /* rules */ 
    }, 
    messages: { 
     /* messages */ 
    }, 
    submitHandler: function() { 
     /* update ui before post */ 
    } 
}); 

$('#myForm').ajaxForm({ 
    dataType: 'json', 
    beforeSubmit: function() { return $('#myForm').valid(); }, 
    success: function (data) { /*callback, update ui after post*/ } 
});