首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在触摸UI之前,文本区域中的onchange事件不会触发

在触摸UI之前,文本区域中的onchange事件不会触发
EN

Stack Overflow用户
提问于 2013-07-12 20:41:00
回答 1查看 6.9K关注 0票数 1

我有一个类似于twitter的tweet tweet区域的文本区域的问题。在我的例子中,我需要限制文本区域的长度,并在标签中显示该长度。

对于这篇文章,我有以下文本区域:

代码语言:javascript
运行
复制
<textarea id="text_content" name="text_content" onkeyup="return limitCharacters(event,140);" onchange="updateCounter(this,140);"></textarea>

limitCharacters函数如下所示:

代码语言:javascript
运行
复制
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事件上触发的函数:

代码语言:javascript
运行
复制
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事件结束后,按下某个键的长度会发生变化。我会得到一个错误的长度。

问题是onchange事件直到我用鼠标触摸UI或切换到另一个窗口或类似情况时才会触发。在onkeyup更改值后,是否可以自动触发onchange?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-12 21:01:57

javascript:

代码语言:javascript
运行
复制
var elem = document.getElementById('dd');
var msg = document.getElementById('msg');
var len = 150;
function f(){
    var v = elem.value;
    if (v.length>len) elem.value = v.substring(0,len);
    else
        msg.innerHTML = v.length;
}

//elem.onchange = f;
elem.onkeyup = f;
elem.onkeydown = f;

html:

代码语言:javascript
运行
复制
<textarea name="" id="dd" cols="30" rows="10"></textarea>
<p>message length :<span id="msg"></span></p>

如果你想要一个特定的文本长度。

或者,您可以使用html属性(行和列)来控制文本区域的大小,使其包含大致数量的字符。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17615159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档