【发布时间】:2013-07-12 12:41:00
【问题描述】:
我对类似于 twitter 的推文 textarea 的 textarea 有疑问。就我而言,我需要限制文本区域的长度并在标签中显示长度。
对于这个porpuse,我有以下文本区域:
<textarea id="text_content" name="text_content" onkeyup="return limitCharacters(event,140);" onchange="updateCounter(this,140);"></textarea>
limitCharacters 函数是这样的:
function limitCharacters(key_event, limit){
var specialCharacters = [8,46]; //Delete and supr keycodes
var unicode_value = String.fromCharCode(key_event.charCode)
var textarea = document.getElementById("text_content");
var textarea_currentlength = textarea.value.toString().length;
for(i=0;i<specialCharacters.length;i++){
if(specialCharacters[i] == key_event.keyCode){
return true;
}
}
if(textarea_currentlength <= limit-1){
return true;
}
return false;
}
它允许使用 supr 并删除和限制字符。 另外,我有一个触发 onchange 事件的函数:
function updateCounter(textarea, limit){
var textarea_currentlength = textarea.value.toString().length;
var label_restantes = document.getElementById("remaining_chars");
label_restantes.textContent = limit - textarea_currentlength;
}
我不能在同一个函数中执行这两个操作,因为在完成 onkeyup 事件后,按键的长度会发生变化。我会得到一个错误的长度。
问题是直到我用鼠标触摸 UI 或者我切换到另一个窗口或类似情况时才会触发 onchange 事件。 onkeyup改变值后是否可以自动触发onchange?
【问题讨论】:
-
change 事件是这样工作的,但是你可以添加 keyup 和 keydown 事件来控制文本的长度。
-
好的,那么让我为你构建一个代码
-
我将 onkeyup 替换为 onkeydown 并将 onchange 替换为 onkeyup 并按预期工作。谢谢@CME64
-
不客气,很高兴我能提供帮助,我还在答案中发布了一个示例。
标签: javascript html onchange