JavaScript;按代码更新函数

JavaScript;按代码更新函数,javascript,jquery,Javascript,Jquery,如果我在文本区域中写入(或复制/粘贴)TEST,文本字段中将出现TEST 但是如果我在texarea中键入TEST,标记/激活它并单击按钮,则文本字段中不会发生任何事情 虽然复制/粘贴时输入的内容与以前相同 看起来第二个JS只工作它的文本是由键盘输入,而不是JS输入 我有以下代码: 函数my_类(e,t){ var n=document.selection?document.selection.createRange()。文本:e.value.substring(e.selectionSta

如果我在文本区域中写入(或复制/粘贴)
TEST
,文本字段中将出现
TEST

但是如果我在texarea中键入
TEST
,标记/激活它并单击
按钮
,则文本字段中不会发生任何事情

虽然复制/粘贴时输入的内容与以前相同

看起来第二个JS只工作它的文本是由键盘输入,而不是JS输入

我有以下代码:


函数my_类(e,t){
var n=document.selection?document.selection.createRange()。文本:e.value.substring(e.selectionStart,e.selectionEnd);
如果(“!=n){
变量a=t+n+“”;
e、 值=e.值.替换(n,a)
}
$('.first').highlightWithinTextarea('update');
}
window.onload=函数(){
var n=document.getElementById(“第一”),
e=document.getElementById(“第二个”);
n、 addEventListener(“输入”,函数(){
var t=[];
$(n.value)。每个(函数(n,e){
“SPAN”==e.nodeName&&e.classList.contains(“my_类”)和&t.push($(e).text())
}),e.value=t.join(“”)
})
};





您的第一个问题在这一行:

$('.first').highlightWithinTextarea('update');
删除这样一行,并在window onload中添加带有IntextArea的Highlightinit。在任何情况下,选择器都应该是#first

第二个问题是:您需要在my_class函数的末尾触发输入事件

函数handleEnterFirstText(e){
}
函数my_类(e,t){
var n=document.selection?document.selection.createRange()。文本:e.value.substring(e.selectionStart,e.selectionEnd);
如果(“!=n){
变量a=t+n+“”;
e、 值=e.值.替换(n,a);
如果(文档中的“createEvent”){
var evt=document.createEvent(“HTMLEvents”);
evt.initEvent(“输入”,假,真);
文件.getElementById(“第一”).dispatchEvent(evt);
}否则{
document.getElementById(“第一”).fireEvent(“oninput”);
}
}
}
window.onload=函数(){
$(“#第一”)。带IntextArea的高亮度({
亮点:“测试”
});
var n=document.getElementById(“第一”),
e=document.getElementById(“第二个”);
n、 addEventListener(“输入”,函数(){
var t=[];
$(n.value)。每个(函数(n,e){
“SPAN”==e.nodeName&&e.classList.contains(“my_类”)和&t.push($(e).text())
}),e.value=t.join(“”)
})
};






您的第一个问题在这一行:

$('.first').highlightWithinTextarea('update');
删除这样一行,并在window onload中添加带有IntextArea的Highlightinit。在任何情况下,选择器都应该是#first

第二个问题是:您需要在my_class函数的末尾触发输入事件

函数handleEnterFirstText(e){
}
函数my_类(e,t){
var n=document.selection?document.selection.createRange()。文本:e.value.substring(e.selectionStart,e.selectionEnd);
如果(“!=n){
变量a=t+n+“”;
e、 值=e.值.替换(n,a);
如果(文档中的“createEvent”){
var evt=document.createEvent(“HTMLEvents”);
evt.initEvent(“输入”,假,真);
文件.getElementById(“第一”).dispatchEvent(evt);
}否则{
document.getElementById(“第一”).fireEvent(“oninput”);
}
}
}
window.onload=函数(){
$(“#第一”)。带IntextArea的高亮度({
亮点:“测试”
});
var n=document.getElementById(“第一”),
e=document.getElementById(“第二个”);
n、 addEventListener(“输入”,函数(){
var t=[];
$(n.value)。每个(函数(n,e){
“SPAN”==e.nodeName&&e.classList.contains(“my_类”)和&t.push($(e).text())
}),e.value=t.join(“”)
})
};






您的html代码中有
onkeypress=“handleEnterFirstText(event)”
,但此函数未在任何地方定义,因此会引发错误
Uncaught ReferenceError:handleEnterFirstText未定义
。设置
e.value
不会触发事件,
input
和其他事件都是用户交互事件。因此,您可能需要手动触发元素上的
input
事件,手动调用update函数。@t.niese您是对的,只是更改了它。但这并不能解决我的问题。您能帮助我吗?您的html代码中有
onkeypress=“handleEnterFirstText(event)”
,但是该函数没有在任何地方定义,因此会抛出错误
Uncaught ReferenceError:handleEnterFirstText没有定义
。设置
e.value
不会触发事件,
input
和其他事件都是用户交互事件。因此,您可能需要手动触发元素上的
input
事件,手动调用update函数。@t.niese您是对的,只是更改了它。但这并不能解决我的问题。你能帮助我吗?