0

フォームにテキストエリアがあります。<p>入力中、テキストはテキストエリアの文字数と同様に表示されます。問題は、最初の文字が認識されないことです。したがって、最初の文字を入力すると、残りの文字は75のままで、文字は表示されません<p>.。「abc」と入力すると、「ab」のみが表示され、残りの文字は72ではなく73になります。その後、最後から「c」、次に「abc」が。に表示されます<p>。それは常に一歩遅れているようなものです。

シンプル<input type="text">でうまく機能しています。

<textarea  name="text" cols="56" rows="2" onKeyDown="drawAd();" onKeyUp="drawAd();" onFocus="drawAd();" maxlength="75" >
  <?php echo $text?>
</textarea>

function drawAd() 
{
    var draw_adtext = document.forms["MyForm"]["adtext"].value;
    var adtext = document.getElementById('p_adtext');
    var adtext2 = document.getElementById('p_adtext2');
    if (draw_adtext != "") {
        adtext.innerHTML = draw_adtext;
        adtext2.innerHTML = draw_adtext;
    } else {
        adtext.innerHTML = "";
        adtext2.innerHTML = "";
    }

   document.getElementById('textcount').innerHTML = 75 - document.forms["MyForm"]["adtext"].value.length + " chars left";
}

追伸:私 maxlengthはtextareaの公式属性ではないことを知っており、それを処理する方法を知っています(誰かがそれに気付いた場合に備えて)。

4

2 に答える 2

1

あなたが提供したコードはそのままでは機能しません (存在しないフォームなどを参照しています)。しかし、jsfiddle.net/v2eHk/ で再作成しました。私の知る限り、問題なく動作します。問題を発生させる方法に関する詳細情報はありますか?

于 2013-02-18T20:50:59.500 に答える
0

残念ながら、私の質問はあまりにもローカライズされていることが判明しました。jsfiddleでコードを試していただき、ありがとうございます。空白のWebページでこの部分だけを試してみるとは考えていませんでした。

私はすべてを台無しにしたタグの後にこのコードを持っていました。それを削除すると問題が解決しました。

<script>
window.onload = function() { 
  var txts = document.getElementsByTagName('TEXTAREA') 

  for(var i = 0, l = txts.length; i < l; i++) {
    if(/^[0-9]+$/.test(txts[i].getAttribute("maxlength"))) { 
      var func = function() { 
        var len = parseInt(this.getAttribute("maxlength"), 10); 

        if(this.value.length > len) { 
          //alert('Maximum length exceeded: ' + len); 
          this.value = this.value.substr(0, len); 
          return false; 
        } 
      }

      txts[i].onkeyup = func;
      txts[i].onblur = func;
    } 
  } 
}
</script>

私はこれを解決するためのポイントに値するとは思わないが、私はこの質問を閉じるための解決策としてそれを受け入れる。

于 2013-02-19T20:51:38.390 に答える