为了账号安全,请及时绑定邮箱和手机立即绑定

js无法监听input值的变化,如何解决?

js无法监听input值的变化,如何解决?

回首忆惘然 2019-02-20 15:18:39
<!DOCTYPE html><html><head>    <meta charset="UTF-8">    <title>Document</title></head><body>    <input type="text" id="input" value="0">    <span class="btn">+1</span>    <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>    <script>        $(function(){            /*改变input值*/            $(".btn").on("click",function(){                let new_value =  parseInt($("#input").val()) + 1;                $("#input").val(new_value);            });            /*监听input值的变化*/            $("#input").bind("input propertychange",function(){                console.log($(this).val());            });        });    </script>    </body></html>如上代码,通过程序改变input值时,无法监听到input值的变化,请问该如何改进?注意是通过js改变input值,而不是键盘输入。请勿在js改变input值的函数里触发数据监听函数,上述代码仅作示意谢谢。
查看完整描述

1 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

用defineProperty吧


<input type="text"  id="aaa" value="1" />

<button id="btn">add1</button>


             var aaa =document.getElementById("aaa");

            var btn =document.getElementById("btn");

            var obj = {};

            btn.onclick=function(){

                if(aaa.value){

                    obj.val = parseInt(aaa.value)+1;

                }else{

                    obj.val = 1;

                }

            }

            valcahnge(aaa,function(){

                console.log(aaa.value);

            });

            function valcahnge(dom,fn){                    

                Object.defineProperty(obj,'val',{

                    get:function(){                    

                        return this._val;

                    },

                    set:function(val){

                        dom.value = val;

                        fn();

                        this._value=val;

                    }

                });            

            }


查看完整回答
反对 回复 2019-02-25
  • 1 回答
  • 0 关注
  • 758 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信