当用户点击img
时,我想将alt
值添加到textarea
并为其添加一个空格,就像用户自己按下它一样但不是这样el.value += ' ';
}
代码:
var chatInput = document.querySelector('textarea[data-a-target="chat-input"]'); //textarea selector
var chatSend = document.querySelector('button[data-a-target="chat-send-button"]');
emoteList.addEventListener('click', function(e){
if(e.target.nodeName == 'IMG'){
chatInput.focus();
chatInput.value += e.target.alt;
}
})
该文字已添加到textarea
,但textarea
更改事件未触发。
最好的方法是什么?我花了好几个小时使用Javascript和jQuery来使它使用事件,但我无法正确使用它。
我在focusing
上尝试textarea
并在window
上使用了调度/触发事件,但它什么也没做。
我尝试在keypress
上解雇textarea
,但它也没有效果。
答案 0 :(得分:0)
如果您的问题是没有触发更改事件,那么您可以通过
手动触发它 var e = $.Event( "change" );
$("#altArea").trigger(e);
答案 1 :(得分:0)
不需要jQuery - 只需使用chatInput.dispatchEvent(new Event('change'));
。
const chatInput = document.querySelector('textarea');
chatInput.addEventListener('change', () => {
console.log('saw a change');
})
const chatSend = document.querySelector('button');
document.querySelector('#emote-list').addEventListener('click', (e) => {
if(e.target.nodeName !== 'DIV') return;
chatInput.focus();
chatInput.value += 'foo ';
chatInput.dispatchEvent(new Event('change'));
})
<textarea></textarea>
<div id="emote-list">click</div>