Заполнители в IE, которые работают с валидатором jquery - PullRequest
0 голосов
/ 19 декабря 2011

Я пытаюсь проверить мою HTML-форму 5, которая использует заполнители в IE7 + 8.

Я использовал вызов valid () из плагина Validation для jquery. Это означает, что я не могу использовать это решение: проблема заполнителя с jQuery Validate . Моя проблема все же, хотя. Используемый мной скрипт-заполнитель добавляет текст-заполнитель в атрибут value. Когда проверка вызывается, сценарий считывает заполнитель как допустимый ввод.

Я не делаю полную проверку, потому что форма распределена по нескольким «вкладкам», поэтому должна быть проверена перед показом следующего раздела. Это не неотразимо

Мой скрипт-заполнитель:

    $('[placeholder]').focus(function() {
        var input = $(this);
        if (input.val() == input.attr('placeholder')) {
            input.val('');
            input.removeClass('placeholder');
        }
    }).blur(function() {
        var input = $(this);
        if (input.val() == '' || input.val() == input.attr('placeholder')) {
            input.addClass('placeholder');
            input.val(input.attr('placeholder'));
        }
    }).blur();

    $('[placeholder]').parents('form').submit(function() {
        $(this).find('[placeholder]').each(function() {
            var input = $(this);
            if (input.val() == input.attr('placeholder')) {
                input.val('');
            }
        })
    });

и вот где я называю валидацию:

if (elements.valid() === 0) {
    valid = 0;
}

if (valid) {
    $('.form').removeClass('error');
    $(this).closest('section').hide().next().show();
}

Любая помощь будет принята с благодарностью!

1 Ответ

2 голосов
/ 14 августа 2012

Вы можете попытаться переопределить требуемую по умолчанию функцию валидатора. Перед вызовом проверки добавьте это:

    jQuery.validator.addMethod("required", function(value, element, param) {
        // check if dependency is met
        if ( !this.depend(param, element) ) {
            return "dependency-mismatch";
        }
        if ( element.nodeName.toLowerCase() === "select" ) {
            // could be an array for select-multiple or a string, both are fine this way
            var val = $(element).val();
            return val && val.length > 0;
        }
        if ( this.checkable(element) ) {
            return this.getLength(value, element) > 0;
        }
        default:
            var placeholderval = $(element).attr('placeholder');
          //if some placeholder values are actually default values, just use "default" attribute to mark them
            var defaultvar = ($(element).attr('default') === undefined);
            return ($.trim(value).length > 0 && ($.trim(value)!=$.trim(placeholderval) || !defaultvar));
    }, jQuery.validator.messages.required);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...