如何通过asp文本框的onchange事件使用javascript更改asp标签的可见性
我使用css将标签的显示设置为“无” 我对js非常陌生,所以我不是100%了解我的代码如何通过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
<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";
}