我写了一个简单的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; 我无法知道我哪里出错了。
答案 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 ";
}
}