ITPub博客

首页 > 应用开发 > Javascript > 动态监控input的值的变化 赋值value触发

动态监控input的值的变化 赋值value触发

原创 Javascript 作者:胡田新 时间:2020-12-07 14:13:06 0 删除 编辑

/**动态监控input的值的变化 赋值value触发

 * [changeValueListener 监听 js 修改 input 和 textarea 的 value。]

 * @param  {[HTMLElement]}   element  [具有 value 属性的 html 元素,如 input 和 textarea。] 

 * @param  {Function} callback [回调,this 为 element,参数为当前值。]

 * @return {[HTMLElement]}            [element]

 */

function changeValueListener(id, callback) {

var element = document.getElementById(id);

if (!Array.isArray(element.callbacks)) {

element.callbacks = [];

var valueDes = Object.getOwnPropertyDescriptor(element.constructor.prototype, "value");

Object.defineProperty(element, 'value', {

set: function(v) {

// console.log('set', v, this, arguments);

element.callbacks.forEach(function(callback) {

if(!v)return false;//赋值空不返回 文本清空X 会触发这个事件

if(v.indexOf('@')>-1) {

    v=v.substr(1,v.length);

return false;

}

callback.call(this, v);

});

valueDes.set.apply(this, arguments);

},

get: function() {

//console.log('get', this, arguments);

return valueDes.get.apply(this, arguments);

}

});

}

element.callbacks.push(callback);

// return element;

}


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31486267/viewspace-2739986/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2017-08-30

  • 博文量
    19
  • 访问量
    26881