如何在内容页面html中编写javascript函数以及如何调用该函数

时间:2010-08-14 12:35:40

标签: javascript asp.net

我在内容页面中编写了两个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>

1 个答案:

答案 0 :(得分:4)

这是因为当在母版页内时,ID会被加长(它们的命名容器被预先填写),所以不是这样:

taCount(this,'charcount','totalmsg')

你需要这个,它获取他们实际呈现的ID:

taCount(this,'<%=charcount.ClientID %>','<%=totalmsg.ClientID %>')

如果您在浏览器中查看来源并在该母版页中展示时搜索charcounttotalmsg,您会看到我对ID的含义,它们可能看起来像这样:_ctl00_Content1_charcount