当输入字段的值发生更改时,会触发什么事件
What event is triggered when the value of an input field is changed?
我使用的JavaScript库偶尔会更改输入字段的值。我想知道什么时候会发生这种情况。
显然,当输入字段的值发生更改时,change
和input
事件不会被触发(至少在Chrome上不会)。
为了验证这一点,我尝试了这个(使用jQuery):
<script>
$(function() {
$('#inp').on('change',function() { console.log('change event'); });
$('#inp').on('input',function() { console.log('input event'); });
$('#inp').val('hello');
});
</script>
<input type="text" id="inp">
当我调用.val('hello')
时,既不触发更改事件,也不触发输入事件。
如何检测变化?(请记住,更改值的代码超出了我的控制范围,因此我无法在那里添加对trigger()
的调用。)
有一个解决方案,您可以每隔一段时间池化textbox的值,并在更改时触发事件。
实时演示
$('#elementId').change(function(){
alert("changed");
});
var previousVal = "";
function InputChangeListener()
{
if($('#elementId').val() != previousVal)
{
previousVal = $('#elementId').val();
$('#elementId').change();
}
}
setInterval(InputChangeListener, 500);
$('#elementId').val(3);
根据许多元素的注释进行编辑。
您可以使用阵列和监视器,30元素不会是性能问题
实时演示
$('.someclass').change(function(){
alert("changed, id >> " + this.id);
});
var hashTablePrevElem=[];
$('.someclass').each(function(){
hashTablePrevElem[this.id] = this.value;
});
function InputChangeListener()
{
$('.someclass').each(function(){
if(hashTablePrevElem[this.id] != this.value)
{
hashTablePrevElem[this.id] = this.value;
$(this).change();
}
});
}
相关文章:
- 当谷歌地图进入街景时,我能抓住什么事件
- 什么是“;选择“;然后触发事件
- 如何抓住'stop'事件,然后做点什么
- 什么'是在HTML5画布中创建关键事件的最佳方式
- 了解在JavaScript中(在IE中)对某个事件调用了什么函数
- angularjs 使用什么事件从文本输入中获取值
- 在什么情况下,Array.observe的“add”事件会触发
- 什么对性能更好:每个元素的事件或一个具有委派的事件
- 当用户允许使用mic Javascript时,事件处理程序是什么
- 直接在DOM事件处理程序中调用作用域函数的最短方法是什么
- 鼠标事件,我的代码出了什么问题
- 触发事件时会发生什么
- addEvent()传奇事件之后的当前最佳实践是什么
- 如果谷歌地图绘图(如onDraw)触发什么事件
- 在 http 请求中添加事件侦听器 ( request.on ) 是什么意思?而笏就是它的用途
- 是什么原因导致阻止默认让原始事件通过
- Windows 8 HTML5 JavaScript 应用程序中向左滑动的事件名称是什么
- 将 react-redux 与基于事件的第三方库一起使用的最佳方法是什么?
- 套接字发生了什么's在'断开连接'事件(服务器端)
- 关于性能,最好的方法是什么:setInterval()或body上的全局事件