无法在我的页面加载上调用参数化的javascript函数

时间:2012-07-31 10:11:58

标签: javascript asp.net

我有一个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)中设置正确的valut但是在页面加载时它的值再次设置为默认值。  如果还有其他解决方案,请建议。

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

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

1 个答案:

答案 0 :(得分:0)

如果没有附加事件,则必须传递textbox(rem)和textbox(field)的客户端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;
    }