0

我有一个javascript函数如下:

  function textCounter(field, rem, maxlimit) {
        if (field.value.length > maxlimit)
            field.value = field.value.substring(0, maxlimit);
        else
            rem.value = maxlimit - field.value.length;
    }

在这里,我试图根据另一个多行文本框(字段)中的字符串长度来设置文本框(rem)中的值。在我的页面加载中,我试图调用它,如下所示:

this.Page.ClientScript.RegisterStartupScript(this.GetType(), "testFunction", "textCounter(txtRemark," + txtRemarksRem.ClientID + ", '2000')", true);

但这似乎不起作用。我在这里做错了什么。

我要解决的问题是多行文本框的 onkey up 和 keydown 属性我能够调用该函数并在计数器文本框(rem)中设置正确的值,但在页面加载时,它的值再次设置为默认值。如果有其他解决方案,请提出建议。

txtRemark.Attributes.Add("onKeyUp", "textCounter(this," + txtRemarksRem.ClientID + ", '2000')");
        txtRemark.Attributes.Add("onkeydown", "textCounter(this," + txtRemarksRem.ClientID + ", '2000')");

上面的代码似乎工作正常(在 keyup 或 down 上设置计数器值。

4

1 回答 1

0

如果事件未附加到它,您必须同时传递文本框(rem)和文本框(字段)的客户端 ID。

this.Page.ClientScript.RegisterStartupScript(this.GetType(), "testFunction", "textCounter(" + txtRemark.ClientID + "," + txtRemarksRem.ClientID + ", '2000')", true);

然后在你的 JS 函数中

function textCounter(f, r, maxlimit) {
        //get the refernce of both element in dom by their client id
        var field =  document.getElementById(f);
        var rem = document.getElementById(r);
        //now this code would run correctly
        if (field.value.length > maxlimit)
            field.value = field.value.substring(0, maxlimit);
        else
            rem.value = maxlimit - field.value.length;
    }
于 2012-07-31T10:30:56.680 回答