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属性で、関数を呼び出してcounter textbox(rem)に正しい値を設定できますが、ページの読み込み時にその値が再びデフォルトに設定されることです。他に解決策がある場合は、提案してください。

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

上記のコードは正常に機能しているようです(キーアップまたはキーダウンでカウンター値を設定します)。

4

1 に答える 1

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;
    }
于 2012-07-31T10:30:56.680 に答える