改变e.target.value的值,v-model监测不到数值的改变是为什么?-灵析社区

拽嘻嘻

el-input标签,使用自定义指令,只允许输入数字,同时使用el-from的必填验证。 当先输入汉字,再输入数字的时候,e.target.value可以正确拿到输入项,但是表单验证的value拿不到e.target.value,但是document.getElementById('XXX').value的方式,却可以拿到正确的值,是为什么。 此为自定义指令代码 ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241118/8dbe352d14f694de8916233ecde63ed0.png) 此为el-input部分代码 ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241118/54aa12836b1f17b78168ab0c1abb78b1.png) 此为表单验证必填项代码 ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241118/d105e9a160d8948fb345ab6aa2bdd597.png) 此为控制台输出 ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241118/581fe80688509b966f0dd7f19d3b8ff1.png)

阅读量:22

点赞量:0

问AI
v-model做了两件事,一是把他的值也就是orderId赋值给input,二是监听input的change和input事件,将input的值反映射到orderId。这是vue做的。 而你的指令中,只是修改了input的值,并没有将这个值映射到orderId。这是你没做的。 那现在需要做的就是实时更新orderId的值,这可以在指令中主动触发下input的change事件,或者通过指令参数的形式去修改orderId值,如给指令加一个回调函数,或者把orderId传进指令(需要注意是值的传递是按值传递,不是按引用,意思你不能单纯的传个xxx.orderId,可能需要把xxx传进去)