怎么捕获input hidden的 value变更
AI 概述
解决方案IE9 及以下 IE 类浏览器其他浏览器通过 MutationObserver 解决
onChange 事件触发的机制,当 input 表单控件发生变化时,并且 input 触发失焦,则会触发 Change 事件。
像 Onchage 标准文档描述,显然 <input type=”hidden” /> 不符合这个标准。 本文主要讨论, input type = hidden 元...
目录
onChange 事件触发的机制,当 input 表单控件发生变化时,并且 input 触发失焦,则会触发 Change 事件。
像 Onchage 标准文档描述,显然 <input type=”hidden” /> 不符合这个标准。 本文主要讨论, input type = hidden 元素,当 value 发生变更时,如何捕获值的变更。
解决方案
IE9 及以下 IE 类浏览器
虽然 onChange 事件无法触发, 但是旧的 IE 浏览器,是有自己的私有事件 onpropertychange 。 这个事件是在表单控件所以属性发生变化时候触发。 当然可以做为 value 变更的替代来使用。可惜限制条件特别多。
其他浏览器
根据过往经验, 我们在通过 js 修改 input hidden 的值的时候,同步触发一下事件,是比较合理的解决方案。 示例代码如下:
// DOM
// <input type="hidden" id="hidden-input" onchange="console.log('hello world')">
// script
document.getElementById("hidden-input").value = "new value";
document.getElementById("hidden-input").onchange();
通过 MutationObserver 解决
像传统的解决方案,每次赋值手动触发一下。 显得很不优雅。
在 IE 11 以上 及 chrome 等现代浏览器,我们可以比较优雅的解决这个问题。
示例解决代码:
var obsever = new MutationObserver(function(mutations, obsever) {
mutations.forEach((mutation) => {
switch (mutation.type) {
case "attributes":
switch (mutation.attributeName) {
case "value":
obsever.dispatch(new UIEvent('change'))
break;
}
break;
}
});
});
obsever.observe(document.getElementsById('hidden-input'), {
attributeFilter: ["value"],
})
以上关于怎么捕获input hidden的 value变更的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。
声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » 怎么捕获input hidden的 value变更
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » 怎么捕获input hidden的 value变更
微信
支付宝