当为React或Vue 时,INPUT,或 TEXTAREA 后台JS赋值

webcast-chatroom___textarea
webcast-chatroom___limit
webcast-chatroom___send-btn


var ele = document.getElementsByClassName("webcast-chatroom___textarea")[0];

var ele = document.getElementsByClassName("webcast-chatroom___textarea")[0]; 
ele.focus(); 
ele.value="ok"; 
var event = new Event('keyup');
event.keyCode = 32;
document.dispatchEvent(event);


var dom = document.querySelector(".webcast-chatroom___textarea"); 
var evt = new InputEvent('input', {
    inputType: 'insertText',
    data: 'abc',
    dataTransfer: null,
    isComposing: false
});
dom.value = 'abc';
dom.dispatchEvent(evt);


var dom = document.querySelector('.webcast-chatroom___textarea')
var evt = new UIEvent('input', {
    bubbles: false,
    cancelable: false
});
dom.value = 'bcd';
dom.dispatchEvent(evt);

// 模拟键盘向下按键
const downEvt = new KeyboardEvent('keydown', {
  bubbles: true, cancelable: true, keyCode: 40,
})

// 模拟键盘回车按键
const enterEvt = new KeyboardEvent('keydown', {
  bubbles: true, cancelable: true, keyCode: 13,
})

// 普通输入事件
const inputEvt = new InputEvent('input', {
  inputType: 'insertText',
  data: 1,
  dataTransfer: null,
  isComposing: false,
})

// 遍历处理textarea框
const inputEvt = new InputEvent('input', {
  inputType: 'insertText',
  data: 1,
  dataTransfer: null,
  isComposing: false,
})

const inpEle = document.querySelector('.webcast-chatroom___textarea')
inpEle.value = 1
inpEle.dispatchEvent(inputEvt)

// 设置发送信息
var inpEle = document.querySelector('.webcast-chatroom___textarea')
 inpEle.value = 'AAAA'  //仅仅是模拟回车,则不需要这样,这样给input框设置值也是不生效的,正确给input设置值的方式参考上面的
// 模拟回车
var event = document.createEvent('Event')
event.initEvent('keydown', true, false)   //注意这块触发的是keydown事件,在awx的ui源码中bind监控的是keypress事件,所以这块要改成keypress
event = Object.assign(event, {
  ctrlKey: false,
  metaKey: false,
  altKey: false,
  which: 13,
  keyCode: 13,
  key: 'Enter',
  code: 'Enter'
})
inpEle.focus()
inpEle.dispatchEvent(event)


===================================================================================


这种适合被框架劫持setter事件,比如react vue

function changInputValue(inputDom,newText){
    let lastValue = inputDom.value;
    inputDom.value = newText;
    let event = new Event('input', { bubbles: true });
    event.simulated = true;
    let tracker = inputDom._valueTracker;
    if (tracker) {
      tracker.setValue(lastValue);
    }
    inputDom.dispatchEvent(event);
}

//使用方法
var userIdDom = document.getElementById('userId');        //普通JS获取输入框Dom
changeReactInputValue(userIdDom,'username');            //改变React的输入框的值

==================================================================================
 
//使用方法
var inputDom = document.querySelector('.webcast-chatroom___textarea');        //普通JS获取输入框Dom
var newText = '不要讲abc啦,听不懂';
let lastValue = inputDom.value;
    inputDom.value = newText;
    let event = new Event('input', { bubbles: true });
    event.simulated = true;
    let tracker = inputDom._valueTracker;
    if (tracker) {
      tracker.setValue(lastValue);
    }
    inputDom.dispatchEvent(event);

var btn = document.querySelector('.webcast-chatroom___send-btn');
btn.click();
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React中,我们可以使用去抖动(debounce)函数来处理组件的`onchange`事件,以呈现输入框(`input`)、文本区(`textarea`)或其他元素。 去抖动函数在代码中引入可以通过第三方库(如Lodash)或自定义实现。这个函数的作用是延迟执行一个函数,只有在指定的间内没有再次触发才真正执行。这在处理输入框等需要实响应但又不希望过于频繁触发的场景中很有用。 首先,我们需要在组件的状态(`state`)中设置一个变量来保存输入框的值,例如`value`。 然后,我们需要编写一个`handleChange`函数来处理输入框的`onchange`事件。在这个函数中,我们要使用去抖动函数来延迟执行一个更新状态(`setState`)的操作。具体实现可以参考以下示例代码: ```javascript import React, { Component } from 'react'; import _ from 'lodash'; // 引入去抖动函数库 class MyComponent extends Component { constructor(props) { super(props); this.state = { value: '', }; // 定义去抖动后的函数 this.debouncedHandleChange = _.debounce(this.handleChange, 300); } handleChange = () => { // 更新输入框的值 this.setState({ value: event.target.value }); }; render() { return ( <div> <input type="text" value={this.state.value} onChange={this.debouncedHandleChange} /> </div> ); } } ``` 在上面的示例中,我们在`constructor`中初始化了一个值为空的`value`状态。然后,我们定义了`debouncedHandleChange`函数,它将`handleChange`函数作为参数传给去抖动函数库的`debounce`方法,并设置了一个300毫秒的延迟间。 最后,在渲染方法中,我们通过`onChange`事件将`debouncedHandleChange`函数绑定到输入框上,实现了去抖动的效果。 这样,当用户在输入框中输入内容,`handleChange`函数不会立即执行,而是延迟300毫秒。只有在这段间内,没有再次输入内容才会真正执行`handleChange`函数,并更新`value`状态。 通过类似的方式,我们也可以应用去抖动函数于其他元素上的`onchange`事件,实现类似的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值