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

My textbox RequiredFieldValidator fires but doesn't stop post when javascript added to checkbox

本文关键字:post RequiredFieldValidator 文本 添加 javascript 复选框 我的      更新时间:2023-09-26

我有一个requiredfieldvalidator工作时,它是由自己(火灾和停止发回),但当我添加javascript启用"next"按钮时,复选框被选中,requiredfieldvalidator将触发当点击"next"时,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;
    }

}

你没有任何类型的验证器的复选框,所以,是的,按钮仍然会导致回发,如果它被点击,按钮是启用的。

在服务器端,只包含对Page的检查。在btnNext的事件代码中有效。如果IsValid为false,则不做任何操作

你所要做的就是添加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;
        }
    }

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