防止在输入无效时禁用按钮jQuery验证

防止在输入无效时禁用按钮jQuery验证,jquery,jquery-validate,webforms,Jquery,Jquery Validate,Webforms,我曾经禁用asp.net Web表单按钮,以在单击时禁用该按钮 $(document).ready(function () { $('[id$=btnSave]').click(function () { var button = this; setTimeout(function () { $(button).attr('disabled', 'disabled'); }, 100); }); });

我曾经禁用asp.net Web表单按钮,以在单击时禁用该按钮

$(document).ready(function () {
    $('[id$=btnSave]').click(function () {
        var button = this;

        setTimeout(function () {
            $(button).attr('disabled', 'disabled');
        }, 100);
    });
});
但当我在页面中添加插件时

$(document).ready(function () {
    $("#form1").validateWebForm({
        rules: {
            myDate: {
                customDate: true
            },
            nic: {
                nicNo: true
            }
        }
    });
...
<asp:TextBox ID="txtName" runat="server" CssClass="required" ></asp:TextBox>
$(文档).ready(函数(){
$(“#表格1”).validateWebForm({
规则:{
我的日期:{
customDate:正确
},
nic:{
尼科诺:是的
}
}
});
...
即使输入无效,它也会禁用按钮。如果输入无效,如何避免禁用按钮?

在禁用按钮并提交之前尝试使用测试表单。根据评论,我知道您正在使用另一个插件初始化jQuery验证插件,但下面的核心概念是我们也会这样做

演示:

jQuery

$(document).ready(function() {

    $('#myform').validate({
        // rules & options
    });

    $('#button').on('click', function (e) {
        e.preventDefault();
        if ($('#myform').valid()) {
            $('#myform').submit();
            $(this).attr('disabled', 'disabled');
        }
    });

});
<form id="myform">
    ....
    <input id="button" type="submit" />
</form>
HTML

$(document).ready(function() {

    $('#myform').validate({
        // rules & options
    });

    $('#button').on('click', function (e) {
        e.preventDefault();
        if ($('#myform').valid()) {
            $('#myform').submit();
            $(this).attr('disabled', 'disabled');
        }
    });

});
<form id="myform">
    ....
    <input id="button" type="submit" />
</form>

我认为将click函数包装在ready中是个问题..jQuery Validate插件没有使用
validateWebForm()
。初始化函数只是调用
.Validate()
@sasi No当我移除
就绪
功能时,它甚至没有禁用按钮…@Sparky是的,我正在使用另一个插件。更新了问题。谢谢…你想在输入有效时禁用按钮吗?这会正确禁用按钮,但不会提交表单。可能需要它来附带
设置超时
乐趣在我的原始代码中使用了Action(但重新加载了相同的页面)。我尝试添加它,但仍然无法使其工作。它工作…必须添加
setTimeout
函数并删除行
$(“#myform”)。submit();
。但是非常感谢……)@Nalaka526,我不确定,尽管这可能是因为我忘记包含
preventDefault
,它从正常单击中删除提交,然后仅在表单有效时才将其放回。更新为新代码,但
未捕获引用错误:行
e中未定义e。preventDefault()
..@Nalaka526,
e
必须传递到调用它的函数中…
函数(e)