单词倒计时无法在asp.net中工作

时间:2013-08-14 06:58:26

标签: c# javascript asp.net

我在网上的一些参考文献中找到了一个用于字数统计的脚本语言。脚本就像这样

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

任何人都可以看到阻止它运行的问题吗?

1 个答案:

答案 0 :(得分:1)

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

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,以便您可以找到该对象。