我有一个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;
}
}
答案 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。只是一个建议。