Форма jQuery отключена, пока все поля не пройдут валидацию - PullRequest
1 голос
/ 13 декабря 2011

У меня есть алгоритм проверки (проверка по маске):

function simpleval (selector,testexp) {         
        jQuery(selector).focusout (function() { 
            get_data = jQuery(this).val();
            test_data = get_data.search(testexp);
            if (test_data == -1){
                jQuery(this).attr('value', 'INCORRECT').css('color','red');
            }
            else {
                this.removeAttribute('style');
            }
            return (test_data);
        });
    }

Чтобы пользователь не нажимал кнопку «Продолжить» до заполнения формы, я отключаю ее:

        jQuery('#continue').attr('disabled', 'disabled');

Затем я запускаю проверку формы:

        var tested_ip = /\b(([01]?\d?\d|2[0-4]\d|25[0-5])\.){3}([01]?\d?\d|2[0-4]\d|25[0-5])\b/;
        ip_test = simpleval ("#dbAddress",tested_ip);
        var tested_port = /\d{2,}/; 
        port_test = simpleval("#dbPort",tested_port);

Теперь, если оба поля (IP и номер порта) заполнены правильно, я должен включить кнопку «Продолжить».

function buttonState(){
    var isValid = false;
    if(ip_test=='0' && port_test=='0') {
                    isValid = true; 
        }
    if (isValid) {
                jQuery('#continue').attr('disabled', '')
                replaceText ('#msg','IT WORKS');
            }
    else jQuery('#continue').attr('disabled', 'disabled');
        }

    jQuery('input').on('focusout', buttonState)

Что с этим не так: все работает нормально, но кнопка все еще отключена.

Ответы [ 2 ]

0 голосов
/ 13 декабря 2011

Вы пытались использовать
jQuery('#continue').removeAttr('disabled')

вместо
jQuery('#continue').attr('disabled', '')
?

0 голосов
/ 13 декабря 2011

Атрибут отключен - это особый вид атрибута, как зарегистрированный = проверенный. Я думаю, что вы должны удалить весь атрибут, поэтому удалить disabled = "disabled" вместо того, чтобы оставить атрибут disabled пустым.

Надеюсь, это поможет.

...