Issue:
Issue is due to "ValidatorCalloutExtender" which fires even when the RequiredFieldValidator is disabled using javascript ValidatorEnable(val, enabled) Method.
Possible Duplicate:
How not to trigger RequiredFieldValidator on hidden field (TextBox)
请先参考此问题。
Remove empty space when visible property is set to false using JavaScript
在上述问题中,我的空白空间问题已解决,但另一个问题开始困扰我。
我将.style.display = "block";
和.style.display = "none";
属性用于具有Ajax RequiredFieldValidator
的文本框。当样式为block
时,将显示文本框,当其为空时,将弹出RequiredFieldValidator
。直到不行,这还好。
但是,当“文本框显示样式”设置为"none"
时,RequiredFieldValidator
会在页面的左上角弹出,并且不允许回发。
你能帮助我吗??
这是JavaScript代码
<script type="text/javascript">
function OtherProof(val) {
// or use this both works
//var ProofType = document.getElementById("ddl_IDProof");
//var SelectedProofType = ProofType.options[ProofType.selectedIndex].value;
if (val == "0") {
document.getElementById("lbl_OtherProof").style.display = "block";
document.getElementById("tb_OtherProof").style.display = "block";
}
else {
document.getElementById("lbl_OtherProof").style.display = "none";
document.getElementById("tb_OtherProof").style.display = "none";
}
}
</script>
这是aspx代码
//Dropdown list whoch on selected i make the textbox Display and Disappear
<asp:DropDownList ID="ddl_IDProof" runat="server"
onchange="OtherProof(this.options[this.selectedIndex].value);"
Width="155px">
<asp:ListItem>Driving License</asp:ListItem>
<asp:ListItem >Voter Card</asp:ListItem>
<asp:ListItem>Pan Card</asp:ListItem>
<asp:ListItem Value="0">Other Proof</asp:ListItem>
</asp:DropDownList>
//Here are the label and Textbox which i make Display and Disappear
<td><asp:Label ID="lbl_OtherProof" runat="server" Text="Other Proof" Font-Size="13px" style="display:none"></asp:Label></td>
<td></td>
<td>
<asp:TextBox ID="tb_OtherProof" runat="server" Width="150px" MaxLength="30" style="display:none"></asp:TextBox>
<asp:FilteredTextBoxExtender ID="FilteredTextBoxExtender4" runat="server" TargetControlID="tb_OtherProof" FilterType="UppercaseLetters,LowercaseLetters,Custom" ValidChars=" "></asp:FilteredTextBoxExtender>
<asp:RequiredFieldValidator ID="Req_OtherProof" runat="server" ErrorMessage="Proof Name is Mandatory" ControlToValidate="tb_OtherProof" Display="None"></asp:RequiredFieldValidator>
<asp:ValidatorCalloutExtender ID="ValidatorCalloutExtender7" runat="server" Enabled="True" TargetControlID="Req_OtherProof"
CssClass="customCalloutStyle">
</asp:ValidatorCalloutExtender></td>
最佳答案
尝试使用ValidatorEnable(val,enable)
带有一个客户端验证器和一个布尔值。启用或禁用客户端验证器。禁用它会使其无法评估,并且始终显示为有效。
<script type="text/javascript">
function disableValidation() {
var val = document.getElementById('Req_OtherProof');
ValidatorEnable(val, false);
if (document.getElementById("ValidatorCalloutExtender7_popupTable") != null) {
document.getElementById("ValidatorCalloutExtender7_popupTable").style.display = "none";
}
}
function OtherProof(val) {
// or use this both works
//var ProofType = document.getElementById("ddl_IDProof");
//var SelectedProofType = ProofType.options[ProofType.selectedIndex].value;
if (val == "0") {
document.getElementById("lbl_OtherProof").style.display = "block";
document.getElementById("tb_OtherProof").style.display = "block";
}
else {
document.getElementById("lbl_OtherProof").style.display = "none";
document.getElementById("tb_OtherProof").style.display = "none";
disableValidation();
}
}
</script>