2013-07-25 3 views
1

Я пишу плагин jQuery для проверки форм. Плагин отлично работает, но я хочу, чтобы определить, что происходит после проверки формы. Поэтому я хочу иметь возможность передать функцию в качестве параметра. Эта функция будет содержать кучу вещей, чтобы отправить форму. Этот параметр нужно вызывать, когда проверка прошла успешно.jQuery validation plugin - функция pass как параметр

Плагин называется в 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