ValidatorEnable无法正常工作

时间:2014-07-04 07:23:58

标签: javascript asp.net validation

我的代码如下

<asp:DropDownList ID="ddlFilter" runat="server" onchange="ShowHideSearchTextBox(this)">
                                <asp:ListItem Value="0">--Select--</asp:ListItem>
                                <asp:ListItem Value="customer_name">Customer Name</asp:ListItem>
                                <asp:ListItem Value="order_number">Order Number</asp:ListItem>
                                <asp:ListItem Value="Pending">Dispatch Pending</asp:ListItem>
                                <asp:ListItem Value="Done">Dispatch Done</asp:ListItem>
                            </asp:DropDownList>

<script type="text/javascript">
        function ShowHideSearchTextBox(me) {
            var searchBox = document.getElementById("searchBox");
            var validator = document.getElementById(" <%= RequiredFieldValidator1.ClientID%> ");
            if (me.value == "Pending" || me.value == "Done") {
                ValidatorEnable(validator, false);
                searchBox.style.display = "none";
            }
            else {
                ValidatorEnable(validator, true);
                searchBox.style.display = "block";
            }
        }
    </script>

无论我在下拉列表中选择了什么值,我的验证器始终处于活动状态。我在猜什么?

修改

validator的值即将到来null

1 个答案:

答案 0 :(得分:1)

您好我认为您的Validator已正确实现,因此问题在于您如何在javascript中访问验证器:

var validator = document.getElementById(" <%= RequiredFieldValidator1.ClientID%> ");

将其更改为:

var validator = document.getElementById("<%= RequiredFieldValidator1.ClientID %>");

删除引号中的额外空格可以解决问题,因为getElementById不会为您删除空格。

测试上面的代码(使用有效的验证程序),更改解决了问题。