当我不知道jQuery的变化时刻时,触发隐藏字段的变化事件
Trigger change event on hidden field when i don't know the moment of change with jQuery?
我有一个隐藏的输入在我的HTML代码,我想知道当输入值已经改变。
<input type="hidden" id="myInputHidden" />
我可以这样写:
$('#myInputHidden').on('change', function() {
alert('triggered');
});
首先,这不起作用,在许多帖子中,我读到我必须手动触发事件。
问题是,我不知道何时(何地)的输入值被改变,所以我不能触发该事件
实现change
事件到隐藏字段的唯一方法是通过脏检查,例如:
(function() {
var myHidden = document.getElementById('myInputHidden'),
currentValue = myHidden.value;
setTimeout(function myHiddenOnChange() {
if (myHidden.value !== currentValue) {
currentValue = myHidden.value;
myHiddenChanged.call(myHidden);
}
setTimeout(myHiddenOnChange, 30);
}, 30);
function myHiddenChanged() {
// that's your hidden field's 'change' event
}
})();
我不推荐这样做,但另一种方法是重写HTMLInputElement.prototype
描述符:
(function() {
var _htmlInputElementValue = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value'),
_htmlInputElementValueSet = _htmlInputElementValue.set,
_ev = document.createEvent('Event');
_ev.initEvent('change', true, true);
_htmlInputElementValue.set = function() {
_htmlInputElementValueSet.apply(this, [].slice.call(arguments));
if (this.type === 'hidden') {
this.dispatchEvent(_ev);
}
}
Object.defineProperty(HTMLInputElement.prototype, 'value', _htmlInputElementValue);
})();
这样做,任何时候有人改变一个隐藏字段的value
属性,它触发change
事件,所以,如果你正在听那个事件,你的代码将开始工作
相关文章:
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 显示5秒后隐藏潜水
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 剑道UI内联编辑:如何在点击其他按钮时隐藏按钮
- 浮动页脚栏-使用Bootstrap隐藏
- 在jquery中为显示/隐藏设置cookie
- 单击按钮后如何逐个调用分区,上一个分区将隐藏
- 从var向代码隐藏函数传递值
- 单击页面上的链接后高度发生变化
- Image赢得't隐藏在滚动jQuery上
- 具有rowGrouping的数据表无法隐藏列
- Jquery隐藏未触发
- JavaScript 检查隐藏字段中的值并将其设置为隐藏字段值
- 分部隐藏在jquery中不起作用
- 检测元素高度变化,如果太小则隐藏
- 当我不知道jQuery的变化时刻时,触发隐藏字段的变化事件
- 隐藏提交按钮,除非表单/输入数据发生了变化
- 隐藏jQuery移动固定工具栏的方向变化
- 问题,而使用过渡+不透明度变化+溢出隐藏
- 当隐藏输入的值动态变化时,jQuery addClass