Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过asp文本框的onchange事件使用javascript更改asp标签的可见性_Javascript_Asp.net_Event Handling - Fatal编程技术网

如何通过asp文本框的onchange事件使用javascript更改asp标签的可见性

如何通过asp文本框的onchange事件使用javascript更改asp标签的可见性,javascript,asp.net,event-handling,Javascript,Asp.net,Event Handling,我使用css将标签的显示设置为“无” 我对js非常陌生,所以我不是100%了解我的代码 <script type="text/javascript"> function strLen(field, count) { var str = document.getElementById("textbox1"); if(str.value.length > 2) { document.getElementById("errorLabel").style.display = 'inhe

我使用css将标签的显示设置为“无” 我对js非常陌生,所以我不是100%了解我的代码

<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>

函数strLen(字段、计数)
{
var str=document.getElementById(“textbox1”);
如果(str.value.length>2)
{
document.getElementById(“errorLabel”).style.display='inherit';
}
}

如果您使用的是asp.net 4,则可以将标签的ClientIdMode设置为static,并按原样引用它。请参见Rick的帖子:

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

纯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>



太长了!!
函数strLen(文本框){
var str=textBox.value;
如果(str.length>2){
document.getElementById(“lengthInfo”).style.display='inline';
}
否则{
document.getElementById(“lengthInfo”).style.display='none';
}
}

JS函数中有参数,但onchange事件中没有传递任何参数

将以下代码应用于文本框:

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

您想使其可见还是不可见?尝试实现的是:如果有人输入超过2个字符,则会显示一条消息,表示如果他们来自美国,请使用邮政缩写,但由于美国以外的客户也可以使用邮政缩写,因此我们允许使用更长的缩写。我目前有另一个版本,其中textbox启用了自动回发功能,它可以这样工作,但您必须单击弹出框,然后屏幕刷新查看我的上述编辑-您实际上可以删除ClientMode=“Static”因为我们正在传递一个“this”引用,不关心文本框的命名。好吧,我已经这样添加了它,没有错误,但是当我输入超过2个字符时它什么也不做。有什么建议可以解释为什么它可能不太正常吗?正如我之前所说的,我对这个JavaScription非常陌生,请参见上面的代码编辑。您不需要一个特定的标签(因为如果它是一个服务器控件标签并且隐藏了它,它将不会被呈现为html)而不是lblError,请使用错误标签的ID。别忘了声明标记是正确的,我已经这样添加了它,没有错误,但是当我输入的字符超过参数中指定的字符数时,它什么也不起作用(我假设这个数字是这样的)。有没有任何关于它为什么不工作的建议?可能是因为你在做一次更改。把它改成onkeyup。它仍然没有给我在标签上的任何改变。它在这个方法上走了多远?有关调试代码,请参见编辑的答案。
<asp:Label ID="lblError" runat="server" Text="Exceeds max length" style="display:none;"></asp:Label>
strLen = function(input, count){
    var errorLabel = document.getElementById("<%=lblError.ClientID%>");
    if (errorLabel)
        errorLabel.style.display = input.value.length > count ? "block" : "none";
}
<span id="errorLabel" style="display:none;">Exceeds max length</span>
strLen = function(input, count){
    var errorLabel = document.getElementById("errorLabel");
    if (errorLabel)
        errorLabel.style.display = input.value.length > count ? "block" : "none";
}