1

textarea の文字数を作成していますが、textarea の制限テキストは 140 文字です。javascriptを使用してテキストエリアの文字数をカウントする関数を作成しました。テキストエリアの下に、残っている文字を表示しました。テキストエリアでキーを押すと文字がカウントされます。そのページにロードするとき、そのページにはいくつかの値がありますが、残っている文字はカウントされませんでした。そのテキストエリアにマウスを置いてキーを押すとカウントされます。ページの読み込み時にテキストエリアの値に応じて残りの文字数をカウントしたい。

これが私のコードです

1.ジャバスクリプト

function limitText(limitField, limitCount, limitNum) {
  if (limitField.value.length > limitNum) {
    limitField.value = limitField.value.substring(0, limitNum);
  } else {
    limitCount.value = limitNum - limitField.value.length;
  }
}

2. HTML と PHP

$tweet = "Hello world.";
<form name='myform'>
<textarea style='margin-bottom:10px; width: 750px;' class='text_tweet'
  name='limitedtextarea' rows='5' maxlength='140'
  onKeyDown='limitText(this.form.limitedtextarea,this.form.countdown,140);'
  onKeyUp='limitText(this.form.limitedtextarea,this.form.countdown,140);'>".$tweet."
</textarea>
<br><font size='1'>(Maximum characters: 140)<br>
You have <input readonly type='text' name='countdown' size='3' value='140'> characters left.</font>
</form>

誰でもこの問題を解決できますか?

少し早いですがお礼を。

4

3 に答える 3

1

キーダウン時と同じ引数を使用して、ロード時に関数を呼び出すことができます。

window.onload = function () {
    var frm = document.getElementsByName('myform')[0];
    limitText(frm.limitedtextarea,frm.countdown , frm.countdown.value);
}

フィドル

しかし、インライン属性を取り除き、イベントを自分で登録することをお勧めします。

window.onload = function () {
    var limitcount = document.getElementsByName('countdown')[0],
        limitNum = 140;
   //Register the listener
    document.getElementsByName('limitedtextarea')[0].addEventListener('keydown', function () {
        if (this.value.length > limitNum) {
            this.value = this.value.substring(0, limitNum);
        } else {
            limitcount.value = limitNum - this.value.length;
        }
    });

    //on load trigger the event
    dispatchEvent(document.getElementsByName('limitedtextarea')[0], "keydown");
}

function dispatchEvent(element, eventName) {
     if ("createEvent" in document) {
        var evt = document.createEvent("HTMLEvents");
        evt.initEvent(eventName, false, true);
        element.dispatchEvent(evt);
    } else element.fireEvent("on" + eventName);
}

フィドル

于 2013-10-08T03:02:02.703 に答える
0

私がこれを正しく理解していれば、これはあなたが必要とするものです。

<p>このコードは、キーを放すたびに内のテキストを更新します。

また、開始値が設定されているため、ページが読み込まれると、すでに制限が通知されます。

<textarea id="txt" onkeyup="count(140,\'txt\',\'msg\');"></textarea>
    <p id="msg">140</p>
    <script>
        function count(c,txtid,msgid){
        document.getElementById(msgid).innerText = c - document.getElementById(txtid).value.length;
        }
    </script>

文字列パラメーターはエスケープされていますが、スラッシュを取り除くだけでうまくいくことに注意してください。

于 2015-10-15T15:43:46.420 に答える