2013-02-18 27 views
0

我在窗体中有一个textarea。键入文本时将显示<p>以及textarea中的字符数。问题在于第一个字符不被察觉。所以当我输入第一个字符时,剩余的字符仍然是75,字符不显示在<p>.当我输入“abc”时,只显示“ab”,剩下的字符是73而不是72.之后,我删除在结尾处显示“c”,然后在“<p>”中显示“abc”。这就像它总是落后于一步。在textarea中键入的显示文本总是落后一步

简单的<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不是文本区域的官方属性和我知道如何处理它(以防万一有人提到它)。

+1

它似乎为我工作:http://jsfiddle.net/XhFzD/1/。我假设了很多并清理了一堆东西之后。你确定没有空白字符,因为你的'<?php echo $ text?>'在它的行前后有一些空格吗?所有的空间都被计算在一个'