jQuery表单提交被禁用,直到所有字段都通过验证

时间:2011-12-13 11:19:12

标签: jquery forms validation

我有验证algorythm(通过掩码检查):

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 :(得分:0)

disabled属性是特殊类型的属性,如checked =“checked”。我认为你应该删除整个属性,所以删除disabled =“disabled”而不是将disabled属性留空。

希望这有帮助。

答案 1 :(得分:0)

你试过用过吗? jQuery('#continue').removeAttr('disabled')

而不是
jQuery('#continue').attr('disabled', '')