Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript textarea中的事件onchange在触摸UI之前不会触发_Javascript_Html_Onchange - Fatal编程技术网

Javascript textarea中的事件onchange在触摸UI之前不会触发

Javascript textarea中的事件onchange在触摸UI之前不会触发,javascript,html,onchange,Javascript,Html,Onchange,我有一个类似于twitter的tweet textarea的textarea的问题。在我的例子中,我需要限制textarea的长度,并在标签中显示长度 对于此端口,我有以下文本区域: <textarea id="text_content" name="text_content" onkeyup="return limitCharacters(event,140);" onchange="updateCounter(this,140);"></textarea> 我不能在

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

对于此端口,我有以下文本区域:

<textarea id="text_content" name="text_content" onkeyup="return limitCharacters(event,140);" onchange="updateCounter(this,140);"></textarea>
我不能在同一个函数中同时执行这两个操作,因为在完成onkeyup事件后,按键的长度会发生变化。我会得到一个错误的长度


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

为什么需要让用户使用delete和backspace?这些措施已经奏效:

JavaScript
为什么需要让用户使用delete和backspace?这些措施已经奏效:

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:

<textarea name="" id="dd" cols="30" rows="10"></textarea>
<p>message length :<span id="msg"></span></p>
如果你想要一个特定长度的文本

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

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:

<textarea name="" id="dd" cols="30" rows="10"></textarea>
<p>message length :<span id="msg"></span></p>
如果你想要一个特定长度的文本


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

change事件的工作原理如下,但是您可以添加keyup和keydown事件来控制文本的长度。好的,让我为您构建一个代码,然后我将onkeyup替换为onkeydown,将onchange替换为onkeyup,并按预期工作。谢谢@CME64不客气,很高兴我能提供帮助,我还在回答中发布了一个示例。更改事件是这样工作的,但是您可以添加keyup和keydown事件来控制文本的长度。好的,让我为您构建一个代码,然后我将onkeyup替换为onkeydown,将onchange替换为onkeyup,并按预期工作。谢谢@cme64不客气,很高兴我能帮上忙,我在回答中也贴了一个例子。你说得对,不需要特殊字符约束。谢谢你的回答你是对的,不需要特殊字符约束。谢谢你的回答
<textarea name="" id="dd" cols="30" rows="10"></textarea>
<p>message length :<span id="msg"></span></p>