我的文本框RequiredFieldValidator会触发,但是当javascript添加到复选框时,它不会停止发布

时间:2015-10-14 19:03:43

标签: javascript asp.net requiredfieldvalidator

我有一个requiredfieldvalidator,它可以自动完成(触发并停止后退),但是当我添加javascript以启用" next"选中复选框时,按钮会在点击" next"时触发requiredfieldvalidator。当txtEmail为空时,但它不会阻止帖子执行。我如何让它工作?

    <ul>
    <li>FirstName<asp:textbox ID="txtFirstName" runat="server"></asp:textbox></li>
     <li>LastName<asp:textbox ID="txtLastName" runat="server"></asp:textbox></li>
     <li>Email<asp:textbox ID="txtEmail" runat="server" ValidationGroup="group"></asp:textbox></li>

    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" ValidationGroup="group" runat="server" ErrorMessage="Required!" ControlToValidate="txtEmail"></asp:RequiredFieldValidator>


    </ul>
    </div> 
    <div>

    <input type="checkbox" id="ckAgree" onclick="EnableSubmit(this)"/>
    I agree to the <a data-toggle="modal" data-target="#myModal">terms and  conditions</a>

    <asp:button ID="btnNext" runat="server" text="Next" Enabled="false" ValidationGroup="group" OnClick="btnNext_Click" />

    <asp:Label ID="lblSuccess" runat="server" Text=""></asp:Label><asp:HiddenField ID="hf_ID" runat="server" />


    ***javascript**:
    EnableSubmit = function (val) {

    var sbmt = document.getElementById("btnNext");

    if (val.checked == true) {
       sbmt.disabled = false;
    }
    else {
       sbmt.disabled = true;
    }

}

2 个答案:

答案 0 :(得分:0)

您的复选框没有任何验证器,所以是的,如果单击该按钮并且该按钮已启用,该按钮仍将导致回发。

在服务器端,只需在btnNext的事件代码中包含对Page.IsValid的检查。如果IsValid是假的,就不要做任何事情。

答案 1 :(得分:0)

所以你要做的就是添加AutoPostBack =“false”

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" ValidationGroup="group" runat="server" ErrorMessage="Required!" ControlToValidate="txtEmail" AutoPostBack="false"></asp:RequiredFieldValidator>
这是因为它正在进行回发并开始会话。

那为什么不这样做

EnableSubmit = function (val) {

        var sbmt = document.getElementById("btnNext");

        if (val.checked == true && $('[id="txtEmail"]').val() != "") {
            sbmt.disabled = false;

        }
        else {
            sbmt.disabled = true;

        }
    }

在这里,您正在检查文本框中是否有任何内容。如果文本框中没有任何内容,则不会启用Button。只是一个建议。