当前位置: 首页 > 面试题库 >

检测到对所有更改 (立即)使用JQuery

谢鸿
2023-03-14
问题内容

<input type="text">罐的价值有多种变化方式,包括:

  • 按键
  • 复制粘贴
  • 用JavaScript修改
  • 通过浏览器或工具栏自动完成

我希望我的JavaScript函数在每次更改时都能被调用(使用当前输入值)。我希望立即调用它,而不仅仅是输入失去焦点时。

我正在寻找最干净,最可靠的方法来在所有浏览器中做到这一点(最好使用jQuery)。


问题答案:

不幸的是,我认为setInterval赢得了大奖:

<input type=text id=input_id />
<script>
setInterval(function() { ObserveInputValue($('#input_id').val()); }, 100);
</script>

这是最干净的解决方案,只需一行代码。它也是最强大的,因为您不必担心所有不同的事件/方式input都可以获取价值。

在这种情况下,使用’setInterval’的缺点似乎并不适用:

  • 100ms的延迟? 对于许多应用而言,100ms足够快。
  • 在浏览器上增加了负载? 通常,在页面上添加很多重量级的setIntervals是不好的。但是在这种特殊情况下,无法检测到增加的页面加载。
  • 它不能扩展到很多输入吗? 大多数页面没有几个输入,您可以在同一setInterval中嗅探所有输入。


 类似资料:
  • 还是由于 JavaScript 的限制,Vue 不能检测对象属性的添加或删除: var vm = new Vue({ data: { a: 1 } }) // `vm.a` 现在是响应式的 vm.b = 2 // `vm.b` 不是响应式的 对于已经创建的实例,Vue 不能动态添加根级别的响应式属性。但是,可以使用Vue.set(object, key, value)方法向嵌

  • 我正在开发一个包含敏感数据(加密密钥)的应用程序,这些数据不应该泄露。该应用程序应该能够在任何时候脱机工作,所以我不能在云中存储密钥。 当用户有一个扎根的设备时,他可以提取apk并获得密钥。我想阻止这一切。 一旦检测到根用户访问权限,有没有办法在没有用户确认的情况下立即强制卸载我的应用程序? (或者是否有其他方法防止钥匙泄漏??) 我看了一下Samsung Knox,它对数据进行加密,并使用一个硬

  • 问题内容: 我试图使用makemigrations命令在现有应用程序中创建迁移,但输出“未检测到更改”。 通常,我使用命令创建新应用,但在创建该应用时并未将其用于该应用。 调试后,我发现它没有创建迁移,因为应用程序中缺少软件包/文件夹。 如果不存在该文件夹,还是创建丢失的文件夹,会更好吗? 问题答案: 要为应用创建初始迁移,请运行并指定应用名称。将创建迁移文件夹。 你的应用必须首先包含(在sett

  • 问题内容: 函数可以工作并检测表单元素的更改,但是有没有一种方法可以检测DOM元素的内容何时更改? 这是行不通的,除非是表单元素 我希望在执行类似操作时触发此操作: 另外或函数没有回调。 有什么建议么? 问题答案: 我没有在jQuery中使用突变事件API,但是粗略的搜索使我进入了GitHub上的该项目。我不知道该项目的成熟度。

  • 问题内容: 我必须根据浏览历史实现一些业务逻辑。 我想做的是这样的: URL更新后,有什么方法可以接收来自react-router的回调吗? 问题答案: 尝试检测路线变化时,可以使用功能。考虑到您正在使用,请用HOC 包装您的组件以访问道具。 返回一个函数。您将使用它来收听。 您可以像这样配置路线 index.js 然后在 AppContainer.js中 从历史文档: 您可以使用收听当前位置的更

  • 问题内容: 我有一个包含10个元素的div,这些元素将被逐个更新,延迟时间为2秒。下面是相同的代码 但是,当我运行它时,所有元素都会一起更新。该程序只是添加一个延迟添加一个开始,并且所有元素都一起更新(被标记)。如何制作代码来逐一标记元素? 问题答案: 您正在打破React的两个基本规则: 不要直接改变状态 如果根据现有状态更新状态,请使用回调形式,因为状态更新可能是异步的(无论如何,在您的示例中