代码之家  ›  专栏  ›  技术社区  ›  Gordon Thompson

CustomValidator Javascript函数认为没有选中单选按钮

  •  0
  • Gordon Thompson  · 技术社区  · 15 年前

    我有一个用户控件,它包含一系列单选按钮和一些文本字段。如果选中了一个特定的单选按钮,我想验证两个文本字段的内容。

    我的控件标记包含以下内容:

    <asp:TextBox ID="FromDate" runat="server" Columns="8"></asp:TextBox>
    <asp:TextBox ID="ToDate" runat="server" Columns="8"></asp:TextBox>
    <asp:RadioButton runat="Server" ID="RadioBetween" GroupName="Date" CssClass="date_group_options_control_radio"/>
    <asp:CustomValidator ID="DateValidator" runat="server" Display="Dynamic" ClientValidationFunction="ValidateDateFields_Client" OnServerValidate="ValidateDateFields"></asp:CustomValidator>
    
    <script type="text/javascript">
    function ValidateDateFields_Client(source, args)
    {
        debugger;
        var bRadioBetweenSelected = false;
    
        var oRadio = document.getElementById('<%=RadioBetween.ClientID%>');
        if (oRadio != null && (oRadio.checked == true || oRadio["checked"] == true))
        {
            bRadioBetweenSelected = true;
        }
    
        if (bRadioBetweenSelected)
        {
            var oFromDate = document.getElementById('<%=FromDate.ClientID%>');
            var oToDate = document.getElementById('<%=ToDate.ClientID%>');
    
            if (oFromDate != null && oToDate != null)
            {
                var sFromDate = oFromDate.value;
                var sToDate = oToDate.value;
    
                source.innerHTML = ValidateFromToDate(sFromDate, sToDate, args);
            }
            else
            {
                args.IsValid = true;
            }
        }
        else
        {
            args.IsValid = true;
        }
    }
    </script>
    

    ValidateFromToDate只检查值并确保它们是正常的。

    但它从来没有进入检查,因为我似乎不知道是否检查无线电之间。但是,服务器端代码工作正常(它做的是完全相同的事情)。

    如果我在控件中手动将Checked设置为“true”,它将按预期工作。

    如何验证此客户端以保存对服务器的访问?我做错什么了?这应该是相当简单的代码:-)

    4 回复  |  直到 15 年前
        1
  •  0
  •   Oleg Kalenchuk    15 年前

    不清楚为什么要使用单选按钮。 通常有多个具有相同组名的单选按钮。 也许你只需要一个复选框?

        2
  •  0
  •   Oleg Kalenchuk    15 年前

    您可以借助FireBug或其他JavaScript调试工具来定位问题。将断点放入函数中,并查看在每个执行步骤中将哪些值插入到变量中。

        4
  •  0
  •   Community Mohan Dere    9 年前

    原来这是因为我在一个页面中有同一个控件的两个版本。隐藏的(在模态对话框的深处)与主对话框冲突。正在对隐藏控件中的控件调用两次客户端验证函数。

    为什么还有待观察,但当注释掉控件的第二个实例时,一切正常。

    每天ASP.NET都让我困惑:-)

    原因如下: User Control with Client + Server Side CustomValidation; Wrong Client side validator is picked

    推荐文章
    Robin  ·  自定义验证代码
    12 年前