плагин jQuery, возвращает значение из функции - PullRequest
2 голосов
/ 11 апреля 2010

Разметка:

<input type="text" name="email" />

Код:

$(':text').focusout(function(){
    $(this).validate(function(){
        $(this).attr('name');
    });
});

Плагин:

(function($){  
    $.fn.validate = function(type) {  
        return this.each(function(type) {  
            if (type == 'email') {
                matches = this.val().match('/.+@.+\..{2,7}/');
                (matches != null) ? alert('valid') : alert('invalid');
            }
            /*else if (type == 'name') {

            }
            else if (type == 'age') {

            }
            else if (type == 'text') {

            }*/
            else {
                alert('total failure');
            }
        });
    };  
})(jQuery);

Проблема заключается в том, что когда я выполняю код выше, он запускаетПлагин, как если бы тип был строкой: "function () {$ (this) .attr ('name');});"вместо того, чтобы выполнять его как функцию.Как мне это решить?

1 Ответ

1 голос
/ 11 апреля 2010

Вы должны проверить, является ли параметр функцией. Если да, используйте возвращаемое значение, иначе предположите, что это буквальное значение.

(function($) {
    $.fn.validate = function(type) {
        //check if type type is a function else take it as literal
        type = typeof type !== "function" ? type : type();
        return this.each(function(type) {
            ...
        });
    };
})(jQuery);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...