javascript - 检测字段是否使用 JavaScript 或 jQuery 更新

标签 javascript jquery

我有一个非常广泛的模板,并且有一个表单用JavaScript或jQuery更新文本字段的值,这个函数一直无法找到它,我需要检测这个字段何时更新,我已尝试使用所有这些功能,但它没有检测到更新时间。

为什么从 JavaScript 更新字段时未检测到,但在字段外书写并单击时更新时检测到?

重要:动态添加的值“90,000”使其成为一个特定的函数,我一直无法找到该函数,并且是尝试检测该值是否随JavaScript改变。

$(function(){

// Automatic update, strange function
setTimeout(function(){
  // Value updated automatically
  $('#long').val("90.000");
}, 2000);

/**
 * Detect if that field is updated
 */
$('input#long').on('change', function(){
  alert("Updated");
});

$(':input').on('change', function(){
  alert("Updated");
});

$('input#long').change(function(){
  alert("Updated");
});

$(document).on('change', 'input#long', function(){
  alert("Updated");
});  

$(document).on('change', 'input', function(){
  alert("Updated");
}); 

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="long">

最佳答案

因此,根据您对其他答案的编辑/评论,您无法手动触发更改

MutationObserver 是解决这个问题的好方法,只不过它们无法观察输入值的变化,as explained here .

据我所知,您唯一的出路是使用 setInterval 每隔几毫秒将当前值与旧值进行比较。有点丑陋,根本不是最佳选择,但可以完成工作。这是一个示例:

$(function() {
  setTimeout(function() {
    $('#long').val('90.000');
  }, 1000);
  
  $('#long').on('change', function() {
    alert('changed');
  });
  
  // Store the current value
  $('#long').data('oldVal', $('#long').val());
  
  // Every 100ms, trigger `change` event whenever new value != old
  setInterval(function() {
    if ($('#long').val() !== $('#long').data('oldVal')) {
      $('#long').trigger('change');
      $('#long').data('oldVal', $('#long').val());
    }
  }, 100);    
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="long">

关于javascript - 检测字段是否使用 JavaScript 或 jQuery 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52120455/

相关文章:

javascript - JS Bootstrap 表将 bool 值显示为 YES 和 NO 而不是 1 和 0

JQuery onclick 函数聚焦输入

javascript - 始终在 Bootstrap 中预先输入的列表中显示链接

javascript - jQuery 在浏览器刷新时返回页面

javascript - javascript 超出最大调用堆栈大小

javascript - 响应式 JavaScript : execute code only for small device width

javascript - 如何将 jQuery Deferred 对象转换为 ES6 Promise

Javascript/Jquery - 检测按键,除非显示文件选择对话框

javascript - 使用 'this' 关键字作为选择器

javascript - CSS/JS 模糊鼠标周围除外