选择textarea,对焦并模拟按空格键

时间:2018-04-11 04:35:33

标签: javascript html

当用户点击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,但它也没有效果。

2 个答案:

答案 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>