2011-08-19 87 views
0

我有使用的CSS来设置标签的显示为无 我对js很新,所以我不是100%在我的代码,它..我该如何改变一个asp标签的JavaScript与一个asp文本框的onchange事件的可见性

<script type="text/javascript"> 
function strLen(field, count) 
{ 
var str = document.getElementById("textbox1"); 
if(str.value.length > 2) 
{ 
document.getElementById("errorLabel").style.display = 'inherit'; 
} 
} 
</script> 
<asp:textbox id="textbox1" CssClass="style5" runat="server" MaxLength="10"   onchange="strLen()"></asp:textbox> 
+0

你想让它可见或不可见吗? –

回答

2

您的JS函数参数,但你不能传递任何参数的onchange事件。

应用下面的代码添加到文本框:

<asp:TextBox ID="textbox1" CssClass="style5" runat="server" MaxLength="10" onkeyup="strLen(this, 2);"></asp:TextBox> 

方法#1:使用标签

你的错误标签应该是这样的:

<asp:Label ID="lblError" runat="server" Text="Exceeds max length" style="display:none;"></asp:Label> 

然后在你的JavaScript函数,你可以这样做:

编辑:有逻辑倒退 - 改为:input.value.length>计数? “block”:“none”;

strLen = function(input, count){ 
    var errorLabel = document.getElementById("<%=lblError.ClientID%>"); 
    if (errorLabel) 
     errorLabel.style.display = input.value.length > count ? "block" : "none"; 
} 

方法#2:使用范围,而不是一个标签的

或者你可以只用一个跨度,而不是一个标签,就像这样:

<span id="errorLabel" style="display:none;">Exceeds max length</span> 

和更改的JavaScript功能如下:

编辑:有逻辑倒退 - 改为:input.value.lengt h>伯爵? “block”:“none”;

strLen = function(input, count){ 
    var errorLabel = document.getElementById("errorLabel"); 
    if (errorLabel) 
     errorLabel.style.display = input.value.length > count ? "block" : "none"; 
} 
+0

当使用时: <%lblError.UniqueID%> 我收到一个错误 –

+0

而不是lblError,使用您的ID错误标签。并且不要忘记将标签声明为<%=(非常重要) –

+0

好吧我已经像这样添加了它,并且没有错误,但是当我输入的参数的字符数多于(I假设那个数字是什么)任何建议,为什么它可能不正常工作? –

0

如果您正在使用asp.net 4,那么你可以将标签设置为静态的和的ClientIDMode引用它像你。看到瑞克的帖子在这里: http://www.west-wind.com/weblog/posts/2009/Nov/07/ClientIDMode-in-ASPNET-40

您可以使用RegularExpressionValidator来验证文本框的长度..但是根据您的评论请参阅下面的JavaScript解决方案。

http://forums.asp.net/t/1026502.aspx

纯JavaScript - 这样的事情应该很好地工作:


<div id="lengthInfo" style="display:none">Too long!!</div> 
<script type="text/javascript"> 
    function strLen(textBox) { 
     var str = textBox.value; 
     if (str.length > 2) { 
      document.getElementById("lengthInfo").style.display = 'inline'; 
     } 
     else { 
      document.getElementById("lengthInfo").style.display = 'none'; 
     } 
    } 
</script> 
<asp:textbox id="textbox1" CssClass="style5" ClientIDMode="Static" runat="server" MaxLength="10" onkeyup="strLen(this)"></asp:textbox> 


+0

试图完成的是: 如果有人输入超过2个字符会显示一条消息,表明如果他们来自美国,请使用邮政缩写,但由于美国以外的客户也可以使用此缩写,因此我们允许更长时间缩写。 我目前有另一个版本的文本框已启用自动回发,它的工作方式,但你必须点击框,然后在屏幕刷新 –

+0

看到我上面的编辑 - 你实际上可以删除ClientIDMode =“静态”,因为我们'传递'this'引用并且不关心文本框的命名。 –

+0

好吧我已经添加了它,并且没有错误,但是当我输入2个以上的字符时它什么都不做,它什么都不做。任何建议,为什么它可能不正常工作?就像我之前说过的,我对这个javascript –

相关问题