1

問題:
この問題は、javascript ValidatorEnable(val, enabled) メソッドを使用して RequiredFieldValidator が無効になっている場合でも発生する「ValidatorCalloutExtender」が原因です。

重複の可能性:
非表示フィールド (TextBox) で RequiredFieldValidator をトリガーしない方法

最初にこの質問を参照してください。

JavaScript を使用して visible プロパティが false に設定されている場合、空のスペースを削除します

上記の質問では、空のスペースの問題は解決されましたが、別の問題が私を悩ませ始めました。

Ajax を持つテキストボックスに.style.display = "block";andプロパティを使用しました。Style が の場合は TextBox が表示され、Empty の場合はポップされます。そうでない限り、これは問題ありません。.style.display = "none";RequiredFieldValidatorblockRequiredFieldValidator

しかし、TextBox の表示スタイルが に設定されている場合、ページの左上隅にポップアップが表示され、ポストバックが許可されません"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>
4

1 に答える 1

1

ValidatorEnable(val, enable)を使用してみてください

client-validator とブール値を取ります。クライアントバリデーターを有効または無効にします。無効にすると、評価が停止し、常に有効に表示されます。

   <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>
于 2012-09-26T13:30:43.053 に答える