0

我有一个表单中的文本区域。键入文本<p>时,文本区域中的字符数以及字符数都会显示。问题是没有感知到第一个字符。所以当我输入第一个字符时,剩余的字符仍然是 75,并且字符没有显示在<p>.当我输入“abc”时,只显示“ab”,剩余的字符是 73 而不是 72。之后我删除了"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";
}

Ps:我知道 maxlength不是 textarea 的官方属性,我知道如何处理它(以防万一有人注意到它)。

4

2 回答 2

1

您提供的代码无法正常运行(它指的是不存在的表单等)。但是我在 jsfiddle.net/v2eHk/ 上重新创建了它,据我所知,它工作得很好。是否有更多关于如何让问题发生的信息?

于 2013-02-18T20:50:59.500 回答
0

不幸的是,事实证明,我的问题过于本地化。感谢您在 jsfiddle 上尝试我的代码,我没想过只在空白网页上尝试这部分。

我在标签之后有这段代码,它把一切都搞砸了。删除它解决了这个问题。

<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 回答