0

我在网上的一些参考资料中找到了一种用于字数统计的脚本语言。脚本是这样的

<script language = "Javascript">
function tbLimit() {
    var tbObj = event.srcElement;
    if (tbObj.value.length == tbObj.maxLength * 1) return false;
}
function tbCount(visCnt) {
    var tbObj = event.srcElement;
    if (tbObj.value.length > tbObj.maxLength * 1) tbObj.value = tbObj.value.substring(0, tbObj.maxLength * 1);
    if (visCnt) visCnt.innerText = tbObj.maxLength - tbObj.value.length;
}
</script>

我已将其插入到我的 aspx 页面中,就在我的内容占位符之后。为了在我的页面中链接和调用这个脚本,我在我的页面加载中输入了这个代码

protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["LoginAs"] != "PoliceStaff")
        {
            Response.Redirect("Login.aspx");
        }
        else
        {
            if (!Page.IsPostBack)
            {
                LoadGrid();

                tbOR.Attributes.Add("onkeypress", "return tbLimit();");
                tbOR.Attributes.Add("onkeyup", "return tbCount(" + lblCounts.ClientID + ");");
                tbOR.Attributes.Add("maxLength", "500");

            }

        }

    }

我还添加了一个标签,它将像这样运行字数统计

You have <asp:Label ID="lblCounts" runat="server" Text="500"></asp:Label> &nbsp;characters left.

谁能看到导致它无法运行的问题所在?

4

1 回答 1

1

非常接近,您需要通过在参数中添加引号来告诉 Javascript ClientID 是一个字符串tbCount

tbOR.Attributes.Add("onkeyup", "return tbCount('" + lblCounts.ClientID + "');");

然后在您的 Javascript 中,使用以下命令查找它document.GetElementById

function tbCount(visCnt) {
    visCntInput = document.getElementById(visCnt);
    var tbObj = event.srcElement;
    if (tbObj.value.length > tbObj.maxLength * 1) tbObj.value = tbObj.value.substring(0, tbObj.maxLength * 1);
    if (visCntInput) visCntInput.innerText = tbObj.maxLength - tbObj.value.length;
}

目前,您假设ClientID返回一个对 DOM 对象的引用,实际上它返回一个客户端ID,以便您可以定位该对象。

于 2013-08-14T07:00:33.430 回答