关于文本框验证

时间:2014-04-16 05:52:57

标签: c# javascript asp.net

我写了一个简单的javascript函数来验证aspx页面中的文本框

     <body>
     <script type="text/javascript" > 
      function checkTextbox(sender, target) {

      if (document.getElementById(sender).value  < document.getElementById(target).value) {
            var lbl = document.getElementById('<%=lbl_Outlet_Message.ClientID %>');
            lbl.style.display = 'block';
            lbl.value = "Enter Slab To Value should be greater or equals to From Value ";
        }

    }
</script>
<form id="form1" runat="server">
 <asp:Label ID="lbl_Outlet_Message" runat="server" ForeColor="Red" Visible="False"></asp:Label>
 <asp:TextBox ID="txt_from_02" runat="server" ></asp:TextBox> 
<asp:TextBox ID="txt_to_02" runat="server" onKeyUp="checkTextbox(this,'txt_from_02')">
</asp:TextBox>

</form>
</body>

当我运行aspx页面时,它给出了以下错误 &#34; 0x800a01a8 - Microsoft JScript运行时错误:需要对象&#34; 我无法知道我哪里出错了。

3 个答案:

答案 0 :(得分:1)

函数checkTextbox期望发件人为id,但您使用this传递当前对象,您应使用this.id代替this或更改if条件直接评估当前对象的value属性,而不是将当前对象传递给document.getElementById

更改

if (document.getElementById(sender).value

if (sender.value

答案 1 :(得分:1)

document.getElementById找不到只有ID名称的ASP.NET控件,因此document.getElementById(target)返回null并抛出异常。

您应该使用clientID属性。

尝试更改此内容:

<asp:TextBox ID="txt_to_02" runat="server" onKeyUp="checkTextbox(this,'txt_from_02')">

致:

<asp:TextBox ID="txt_to_02" runat="server" onKeyUp="checkTextbox(this,'<%=txt_from_02.ClientId %>')">

答案 2 :(得分:0)

您正在使用document.getElementById函数,但您没有传递文本框的Id。所以你得到了错误。您正在通过写“this”传递文本框的整个对象。所以document.getElementById(sender)实际上并没有获得id。尝试使用以下解决方案,您的代码将完美运行:

<body>
 <script type="text/javascript" > 
  function checkTextbox(sender, target) {

  if (document.getElementById(sender.id).value  < document.getElementById(target).value) {
        var lbl = document.getElementById('<%=lbl_Outlet_Message.ClientID %>');
        lbl.style.display = 'block';
        lbl.value = "Enter Slab To Value should be greater or equals to From Value ";
    }

}