Объединение 2 addMethods в один для проверки - PullRequest
2 голосов
/ 24 июня 2011

У меня есть 2 метода addMethods, примененных к одному блоку ввода

Примечание: мне нужны 2 сообщения об ошибках, такие как пустая ошибка и действительный URL, если одно из них недопустимо в одном addMethod.

1 - требуется проверка 2 - проверка правильности URL.

Есть ли способ объединить оба и получить одинаковый результат?

jQuery.validator.addMethod("complete_req", function (val, elem) {

    var value = $.trim($("#linkTypeDd").val());
    if (value == "2") 
    {
        if (val.length == 0) {
            return false;
        }
            return true;
    }
},"");

    jQuery.validator.addMethod("complete_url", function (val, elem) {

        var value = $.trim($("#linkTypeDd").val());
        if (value == "2") {
            // if no url, don't do anything
            if (val.length == 0) {return true;}

            // if user has not entered http:// https:// or ftp:// assume they mean http://
            if (!/^(https?|ftp):\/\//i.test(val)) {
                val = 'http://' + val; // set both the value
                $(elem).val(val); // also update the form element
            }

            // now check if valid url
            // http://docs.jquery.com/Plugins/Validation/Methods/url
            return "Suppose this is url rejex";
        }

        return true;
    });

    jQuery.validator.messages.required = "";
    var validator = $("#footer-form").validate({
        debug: true,

        submitHandler: function (form) {
            $(form).ajaxSubmit(formoptions);
        },

        invalidHandler: function (e, validator) {
            var errors = validator.numberOfInvalids();
            if (errors) {
                var message = errors == 1 ? 'You missed 1 field. It has been highlighted.' : 'You missed ' + errors + ' fields.  They have been highlighted.';
                showMessage("#error", message);
                $("#success").hide();
            }
            else {
                $("#error").hide();
            }
        },

        rules:
        {
            DisplayName: "required",
            UrlName: "required",
            ExternalPath: {
                complete_req : true,
                url: "complete_url"
            }
        },

        errorClass: "invalid",
        validClass: "valid",
        errorContainer: "#error"
    });

1 Ответ

0 голосов
/ 25 июня 2011

Я думаю, что объединение обоих правил в один - единственный способ. т. е. объединение логик обоих методов в один и преобразование его в один метод добавления и одно правило.

var value = $.trim($("#linkTypeDd").val());
    if (value == "2") 
    {
        if (val.length == 0) {
            return false;   //means required
        }
        else
        {
            // here you have to do the checking for valid url  
        } 
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...