MutationObserver 监听input标签中通过JS改变其value值

情形

我遇到的一个需求场景是这样的,有一个input标签,我们如果只对这个input标签增加change事件,那么是无法通过事件监听到JS直接修改value的情况的(如:input.setAttribute(“value”,“789456”)),然后我发现JS中的 Mutation Observer API 用来监视 DOM 变动。
具体的使用可以参考:http://javascript.ruanyifeng.com/dom/mutationobserver.html#toc1

以下仅是我用来监听input的value属性的变化

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>MutationsObserver</title>
</head> 
 
<body>
    <input id="input" type="text" value="123">
    <script>
        let MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver
        
        const input = document.getElementById('input')
        const options = {
            attributes: true,
            artributeOldValue:false,
            attributeFilter:["value"],
            characterData:true,
            characterDataOldValue:true
        }
        // 创建MutationObserver实例,返回一个观察者对象
        const mutation = new MutationObserver(function(mutationRecoards, observer) {
            // 当元素发生对应的options中包含的变化时,执行代码
            console.log("value改变了,在这里面做操作",)
            console.log(mutationRecoards)
            console.log(observer)
            
        })

        // 对观察者添加需要观察的元素,并设置需要观察元素的哪些方面
        mutation.observe(input, options);
        
        // 模拟两秒后,通过JS的方式改变input中的内容,
        setTimeout(() => {
            input.setAttribute("value","789456")
        }, 2000);

 
       
    </script>
</body>
</html>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Vue,我们可以使用v-model指令来监听input标签value。v-model指令绑定数据,可以实时更新data,并且可以通过该指令监听input标签的输入事件和修改事件。 首先,在HTML模板,我们需要使用v-model指令来绑定数据和监听事件。例如,我们可以将一个data的属性绑定到input标签value上: <input v-model="inputValue" /> 在上面的代码,我们将datainputValue属性与input标签value进行了双向数据绑定。一旦我们在input标签输入内容,该内容会自动更新到datainputValue属性的上。反之,当我们在data修改了inputValue属性的input标签value也会随之变化。 除了双向数据绑定外,v-model指令还可以监听input标签的输入事件和修改事件。例如,当用户输入文本时,我们可以添加一个监听事件: <input v-model="inputValue" @input="handleInputChange" /> 在Vue实例,我们可以定义一个方法来处理该事件: methods: { handleInputChange() { console.log(this.inputValue); } } 在上述代码,当用户输入内容时,handleInputChange方法会被触发,并且会在控制台打印出inputValue。 通过以上方法,我们可以很方便地实现对input标签value监听和处理。这种方式使得我们不仅可以随时获得用户的输入,还可以实时更新相关数据,实现更加灵活和交互性的界面。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

structrue

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值