antd模拟输入

在 antd 中,普通的 dispatch input 和 dispatch change 函数不能触发输入框输入,需要重新绑定_valueTracker

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// 获取 input 输入框的dom对象
var element_input = window.document.querySelector("input");

// JavaScript 中的 `_valuetracker` 方法常常用于监听 HTML 表单元素(如 input,select,textarea 等)的值变化,并在每次值发生变化时执行回调函数。
if (element_input._valueTracker)
var _templMethod = element_input._valueTracker.getValue;
if (element_input.getValue) var _templMethod = element_input.getValue;
if (element_input._valueTracker)
element_input._valueTracker.getValue = () => "";

// 修改input的值
element_input.value = "123";

// 设置输入框的 input 事件
var event = new InputEvent("input", {
bubbles: true, // 表示事件对象是否冒泡
cancelable: true, // 表示事件是否可以被取消,即能否用Event.preventDefault()取消这个事件。
});
// 触发 dom 对象的 input 事件
element_input.dispatchEvent(event);

// 将`_valuetracker`的值(方法)重新绑定
if (element_input._valueTracker)
element_input._valueTracker.getValue = _templMethod;