如何使用javascript检测textarea值何时发生变化?
将数据填入id="yyyy"
,数据id="xxxx"
也会发生变化,当alert
中的值发生变化时,我id="xxxx"
怎么办?
https://jsfiddle.net/9b6h897d/10/
请不要编辑功能check
和id="yyyy"
<textarea id="yyyy" onkeyup="check(this.value)"></textarea>
<textarea id="xxxx" onchange="check2(this.value)" readonly></textarea>
<script>
function check(value){
document.getElementById("xxxx").value = value;
}
function check2(value){
alert(value);
}
</script>
答案 0 :(得分:1)
调用第一个不在更改事件中的第二个函数
试试这个:
<textarea id="yyyy" onkeyup="check(this.value)"></textarea>
<textarea id="xxxx" readonly></textarea>
<script>
function check(value){
document.getElementById("xxxx").value = value;
check2(value);//call the check2 here
}
function check2(value){
alert(value);
}
</script>
或触发onchange事件
<script>
function check(value){
document.getElementById("xxxx").value = value;
document.getElementById("xxxx").onchange();
}
function check2(value){
alert(value);
}
</script>
或向xxx添加其他事件
<textarea id="yyyy" onkeyup="check(this.value)" oninput="check2(this.value)"></textarea>
<textarea id="xxxx" readonly></textarea>
<script>
function check(value){
document.getElementById("xxxx").value = value;
}
function check2(value){
alert(value);
}
</script>
答案 1 :(得分:0)
你可以在其他功能中调用函数
<script>
function check(value){
document.getElementById("xxxx").value = value;
check2(value);
}
function check2(value){
alert(value);
}
尝试这个小提琴...
答案 2 :(得分:0)
您无需更新check()
中的值,而是调用check2()
并更新值。因此,请从id=xxxx
编辑:按如下方式覆盖keyup
并从该事件处理程序调用{{1}}函数
inaccessible
&#13;
答案 3 :(得分:0)
您可以重新定义textarea元素的value属性:
<html>
<head>
<script>
//Is not changable according to OP
function check(value){
document.getElementById('xxxx').value = value
};
//Is not changable according to OP
function check2(value){
alert(value)
};
window.onload = function(){
var tE = document.querySelector('#xxxx'); //The readonly textarea
//Redefine the value property for the textarea
tE._value = tE.value;
Object.defineProperty(tE, 'value', {
get: function(){return this._value},
set: function(v){
console.log(this.id, ' - the value changed to: ' + v)
this._value = v;
this.setAttribute('value', v) //Setting the attribute (browser stuff);
check2(v)
}
})
}
</script>
</head>
<body>
<textarea id = 'yyyy' onkeyup = 'check(this.value)'></textarea>
<textarea id = 'xxxx' onchange = 'check2(this.value)' readonly></textarea>
</body>
</html>
的console.log(): https://jsfiddle.net/mu7o1sxq/
答案 4 :(得分:0)
您可以将MutationObserver
的配置设置为attributes:true
,将#xxxx
.dataset
设置为.value
的{{1}} #yyyy
功能
check