【问题标题】:required field validator with javascript confirm function not validating带有javascript确认功能的必填字段验证器未验证
【发布时间】:2012-05-17 10:34:43
【问题描述】:

我正在使用必填字段验证器,它验证文本框,单击提交按钮时我必须要求确认,我使用 java 脚本的 confirm() 函数。 问题是,当我在确认框页面回发中按确定时,当我将文本框留空时,必填字段验证器不会停止页面。 从 stackoverflow 阅读帖子后,我使用自定义验证器来停止页面,但我不能这里是代码。

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="TextBox1" ValidationGroup="one" runat="server" ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>
    <asp:TextBox ID="TextBox1" runat="server" ValidationGroup="one"></asp:TextBox>
    <asp:Button ID="Button1" runat="server" Text="Button" 
        OnClientClick="validate();"  ValidationGroup="one" onclick="Button1_Click"/>
    <asp:CustomValidator ID="CustomValidator1" ValidateEmptyText="true" runat="server" ValidationGroup="one" ErrorMessage="CustomValidator"></asp:CustomValidator>

    <script type='text/javascript'>   
           function validate() {
            var cv = document.getElementById('MainContent_CustomValidator1');
            if (cv) {
                cv.isValid = confirm('are you sure want to update record ?');
            }
     }  </script>

【问题讨论】:

  • 自定义验证器没有验证功能?

标签: c# javascript asp.net validation


【解决方案1】:
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="TextBox1" ValidationGroup="one" runat="server" ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>
    <asp:TextBox ID="TextBox1" runat="server" ValidationGroup="one"></asp:TextBox>
    <asp:Button ID="Button1" runat="server" Text="Button" 
        OnClientClick="return validate();"  ValidationGroup="one" onclick="Button1_Click"/>
    <asp:CustomValidator ID="CustomValidator1" ValidateEmptyText="true" runat="server" ValidationGroup="one" ErrorMessage="CustomValidator" ClientValidationFunction="TextBox1Client"></asp:CustomValidator>

 <script type='text/javascript'>   
        function validate() {
          if(confirm('are you sure want to update record ?')){
          return true;
          }
          else
          {
          return false;
          }
       }
//you need to add a custom validot client function also  
       function TextBox1Client(sender, args) {
       //write your custom code here
        args.IsValid = false;
        //OR
        args.IsValid =true;
       }
    </script>

【讨论】:

  • 我已经使用了你的模式并且硬编码 isValid= false 但它并没有停止页面的回发,因为这个 function TextBox1Client(sender, args) { //在这里写你的自定义代码 args.IsValid = false; }
  • ok 删除 OnClientClick="return validate();" 按钮一段时间并尝试。让我知道结果
【解决方案2】:

试试这个代码使用 Page_ClientValidate

 <asp:Button ID="Button1" runat="server" Text="Button" 
        OnClientClick="Javascript:if(Page_ClientValidate('one')){return validate();}"  ValidationGroup="one" onclick="Button1_Click"/>

【讨论】:

    【解决方案3】:

    像这样更正你的代码

    if(confirm('are you sure want to update record ?')==false){
      return false;
    }
    

    谢谢。

    【讨论】:

      【解决方案4】:

      JavaScript 区分大小写,试试这个:

      <asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="TextBox1" ValidationGroup="one" runat="server" ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>
      <asp:TextBox ID="TextBox1" runat="server" ValidationGroup="one"></asp:TextBox>
      <asp:Button ID="Button1" runat="server" Text="Button" 
          OnClientClick="validate();"  ValidationGroup="one" onclick="Button1_Click"/>
      <asp:CustomValidator ID="CustomValidator1" ValidateEmptyText="true" runat="server" ValidationGroup="one" ErrorMessage="CustomValidator"></asp:CustomValidator>
      
      <script type='text/javascript'>   
             function validate() {
              var cv = document.getElementById('MainContent_CustomValidator1');
              if (cv) {
                  cv.IsValid = confirm('Are you sure want to update record?');
              }
       }  </script>
      

      您没有将 IsValid 中的 i 大写。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-23
        • 2010-11-26
        • 1970-01-01
        • 2011-11-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多