我在表格中有一个textarea。输入文本时会显示<p>
以及textarea中的字符数。问题是第一个角色没有被察觉。因此,当我键入第一个字符时,剩余的字符仍为75,并且字符不会显示在<p>.
当我输入“abc”时,仅显示“ab”,其余字符为73而不是72。在此之后我从末尾删除“c”,然后在<p>
中显示“abc”。这就像它总是落后一步。
使用简单的<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的官方属性,我知道如何处理它(以防有人注意到它)。
答案 0 :(得分:1)
您提供的代码不具有功能(它指的是不存在的表单等)。 但我已经在jsfiddle.net/v2eHk/重新创建了它,据我所知,它的工作正常。是否有关于如何解决问题的更多信息?
答案 1 :(得分: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>
我认为我不应该解决这个问题,但我接受它作为解决这个问题的解决方案。