我在内容页面中编写了两个javascript函数。然后我拿一个html文本框,在onkeypress事件上我尝试调用这两个函数,但我正在运行该应用程序,我没有找到任何输出来帮助我。 在这里,我试图计算keypress事件中文本框中的字符数。如果我在简单的页面中编写一个javascript函数,那么它会成功运行,但它不会在内容页面中运行帮助我。
这是代码
<%@ Page Language="C#" AutoEventWireup="true" MasterPageFile ="~/Site1.Master" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication2.WebForm1" %>
<asp:Content ID="Content1" runat="server"
contentplaceholderid="ContentPlaceHolder1">
<script language ="javascript" type = "text/javascript">
maxL=0;
var bName = navigator.appName;
function taCount(taObj,Cnt,totmsg)
{
objCnt=createObject(Cnt);
objtotmsg = createObject(totmsg);
objVal=taObj.value;
if (objCnt)
{
if(bName == "Netscape")
{
//objCnt.textContent = maxL-objVal.length;}
var totalchar = parseInt((objVal.length - 1) / 160);
objCnt.textContent = maxL + objVal.length;
objtotmsg.textContent = totalchar + 1;
}
//else{objCnt.innerText= maxL -objVal.length;}
else
{
var totalchar = parseInt((objVal.length - 1) / 160);
objCnt.innerText= maxL + objVal.length;
objtotmsg.innerText = totalchar + 1;
}
}
return true;
}
function createObject(objId)
{
if (document.getElementById) return document.getElementById(objId);
else if (document.layers) return eval("document." + objId);
else if (document.all) return eval("document.all." + objId);
else return eval("document." + objId);
}
</script>
<textarea id="TextArea1" onkeyup="return taCount(this,'charcount','totalmsg')" cols="20" rows="10"></textarea>
<asp:Label ID="charcount" runat="server" Text="0"></asp:Label>/<asp:Label ID="totalmsg" runat="server" Text="0"></asp:Label>
</asp:Content>
答案 0 :(得分:4)
这是因为当在母版页内时,ID会被加长(它们的命名容器被预先填写),所以不是这样:
taCount(this,'charcount','totalmsg')
你需要这个,它获取他们实际呈现的ID:
taCount(this,'<%=charcount.ClientID %>','<%=totalmsg.ClientID %>')
如果您在浏览器中查看来源并在该母版页中展示时搜索charcount
或totalmsg
,您会看到我对ID的含义,它们可能看起来像这样:_ctl00_Content1_charcount
。