背景:
为了快速输入账号,密码,写了一个插件,但由于输入部分用了antd,改变value并不能通过校验。
解决思路:
能否模拟用户键盘输入,这样避免直接设置value校验不通过的问题。
找到的办法:
react页面专属,因为react16内部定义了descript拦截value,所以派发事件,无法触发input所绑定的事件,需要重置输入状态;
function set(dom,num,value){
let inputLabel = dom; //这里获取需要自动录入的input内容
let lastValue = inputLabel[num].value;
inputLabel[num].value = value;
let event = new Event("input", { bubbles: true });
// React15
event.simulated = true;
// React16 内部定义了descriptor拦截value,此处重置状态
let tracker = inputLabel[num]._valueTracker;
if (tracker) {
tracker.setValue(lastValue);
}
inputLabel[num].dispatchEvent(event);
}
setTimeout(()=>{
set($(".ant-input"),0,'账号');
set($(".ant-input"),1,'密码');
},200)
1347



被折叠的 条评论
为什么被折叠?



