2012-12-10 20 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*/ } 
});