2013-07-25 35 views
1

我正在写一个jQuery插件来验证表单。该插件工作得很好,但我希望能够定义表单验证后会发生什么。所以我想能够传递一个函数作为参数。该函数将包含大量实际提交表单的内容。验证成功时需要调用该参数。jQuery验证插件 - 通过函数作为参数

插件称为HTML文件中:

<script> 
    $(document).ready(function(){ 
    $('#cForm').shdValidate({ 
     success : formSubmit() 
    }); 
    }); 
</script> 

jQuery插件:

(function($) { 
    $.fn.shdValidate = function(options) { 

    //==== SETTINGS 
    var shdValidateSuccess = $.extend(options).success, 
     form = this; 

    //==== SUBMIT CLICK 
    this.children('input[type=submit]').click(function(){ 
     //variables 
     var shdRequired = $(form).children('.required'), 
      shdValid = 0; 

     //validated fields 
     $(shdRequired).each(function(){ 
     $(this).removeClass('shdValidateAlert'); 
     if ($(this).val() == '' || $(this).val() == $(this).attr('placeholder')){ $(this).addClass('shdValidateAlert'); } 
     else { shdValid += 1; } 
     }); 

     //outcome 
     if (shdValid == $(shdRequired).length) { 
     //THE SUCCESS PARAMETER NEEDS TO BE CALLED HERE SOMEHOW 
     } 
     return false; 
    }); 

    } 
}(jQuery)); 

正如你所看到的,我评论的参数需要在插件被称为地方。目前我无法得到这个工作。

回答

2

你需要做出两个改变

$(document).ready(function(){ 
    $('#cForm').shdValidate({ 
     success : formSubmit 
    }); 
    }); 

而且

(function($) { 
    $.fn.shdValidate = function(options) { 

    //==== SETTINGS 
    var shdValidateSuccess = $.extend(options).success, 
     form = this; 

    //==== SUBMIT CLICK 
    this.children('input[type=submit]').click(function(){ 
     //variables 
     var shdRequired = $(form).children('.required'), 
      shdValid = 0; 

     //validated fields 
     $(shdRequired).each(function(){ 
     $(this).removeClass('shdValidateAlert'); 
     if ($(this).val() == '' || $(this).val() == $(this).attr('placeholder')){ $(this).addClass('shdValidateAlert'); } 
     else { shdValid += 1; } 
     }); 

     //outcome 
     if (shdValid == $(shdRequired).length) { 
     //THE SUCCESS PARAMETER NEEDS TO BE CALLED HERE SOMEHOW 
     if($.isFunction(shdValidateSuccess)){ 
      shdValidateSuccess(form); 
     } 
     } 
     return false; 
    }); 

    } 
}(jQuery)); 
+0

Aaawwww yeeeeaaah。像魅力一样工作,欢呼哥们。在6分钟内您的方式即将来临。 – Coop