Javascript 如果jquery的表单输入中存在验证错误,请禁用提交按钮

Javascript 如果jquery的表单输入中存在验证错误,请禁用提交按钮,javascript,jquery,html,forms,Javascript,Jquery,Html,Forms,如果使用jquery的表单输入出现验证错误,我想禁用submit按钮。以下是我正在使用的代码: HTML: 更新:禁用按钮没有问题。问题是,在更正错误后,禁用的属性再次保留!我做错了什么?您没有从\u checkForm(){}函数返回结果。您可以从\u validate一中进行验证,并将其传递给它,但不使用/传递\u checkForm()的结果,因此此验证: if(!_checkForm()) {...} 始终为true,因为\u checkForm不返回任何内容(未定义)并且您的-正在加

如果使用jquery的表单输入出现验证错误,我想禁用submit按钮。以下是我正在使用的代码: HTML:


更新:禁用按钮没有问题。问题是,在更正错误后,禁用的属性再次保留!我做错了什么?

您没有从
\u checkForm(){}
函数返回结果。您可以从
\u validate
一中进行验证,并将其传递给它,但不使用/传递
\u checkForm()
的结果,因此此验证:

if(!_checkForm()) {...}

始终为true,因为
\u checkForm
不返回任何内容(未定义)并且您的
-正在加载它。此外,如果检查通过,您应该
返回false
以中断提交。

您忘记了返回false

请试试这个:

function _validate(input) {
    if( input.val() === '' ) {
        _showError(input, 'EMPTYSTR');
        return false;
    }
    return true;
}
function _checkForm() {
    $('#orderForm .finput').each(function(){
        $(this).focusout(function() {
            _validate($(this)); 
        });
    });
}
$(document).ready(function() {

    $('form#orderForm').submit(function(event) { 
        event.preventDefault(); // for ajax submission
        if(!_checkForm()) {
            $('button.submit').prop('disabled', true);
            return false;
        }
        else {
            // ajax post
        }
    });
});

test1.html

功能验证(输入){
if(input.val()==''){
_淋浴ROR(输入“清空系统”);
返回false;
}
返回true;
}
函数_checkForm(){
$('#orderForm.finput')。每个(函数(){
$(this).focusout(函数(){
_验证($(此));
});
});
}
$(文档).ready(函数(){
_checkForm();
$('form#orderForm')。提交(函数(事件){
event.preventDefault();//用于ajax提交
如果(!\u checkForm()){
$('button.submit').prop('disabled',true);
}
否则{
//阿贾克斯邮报
}
});
});

提交

还要添加您的
HTML
?代码对我来说很好。你在控制台中是否有任何错误?是的,添加html。让我看看添加了html部分的内容,并更新了我的问题。你知道问题是什么吗?!!它禁用按钮,但在更正错误后,不会删除禁用的按钮attribute@AfshinHaghighat那么,不要禁用它。只是提醒一下。或者,如果禁用它,只要重新启用它,如果
\u检查表单
返回
true
添加
$('button.submit').prop('disabled',false))到其他条件不起任何作用@当然不是。它已经被禁用了。这就是为什么您应该在输入上使用onkeydown事件进行实时操作,或者调用
\u checkForm
其他方法way@AfshinHaghighat在google中搜索“javascript验证表单live”,您将看到大量示例
if(!_checkForm()) {...}
function _validate(input) {
    if( input.val() === '' ) {
        _showError(input, 'EMPTYSTR');
        return false;
    }
    return true;
}
function _checkForm() {
    $('#orderForm .finput').each(function(){
        $(this).focusout(function() {
            _validate($(this)); 
        });
    });
}
$(document).ready(function() {

    $('form#orderForm').submit(function(event) { 
        event.preventDefault(); // for ajax submission
        if(!_checkForm()) {
            $('button.submit').prop('disabled', true);
            return false;
        }
        else {
            // ajax post
        }
    });
});