HTML Hidden 控件是否有任何事件?比如onchange什么的?

IT技术 javascript html dom
2021-03-15 04:02:22

我可以将任何事件处理程序附加到 HTML 隐藏输入字段吗?基本上我想在隐藏的输入字段值更改时运行一个函数。

3个回答

只有当用户在浏览器中执行事件时才会触发事件,因此如果它被 CSS 隐藏<input type="hidden"><input>隐藏,用户将无法触发事件到您的输入。

让 onchange 起作用的唯一方法是在 Javascript 中手动触发 onchange。一个简单的例子:

<form name="f" onsubmit="document.f.h.value='1'; 
                         document.f.h.onchange(); 
                         return false;"
>
    <input type="hidden" name="h" value="0" onchange="alert(document.f.h.value);" />
    <input type="submit" />
</form>

从代码中的某个奇怪的地方调用事件处理程序是一种难以形容的糟糕编码实践
2021-05-08 04:02:22
好主意,但我不得不改用 onkeyup ,因为 onchange 才能使它工作。
2021-05-09 04:02:22

是的,某些浏览器(例如 Firefox)会在隐藏元素通过属性激活时触发onclickonfocus事件accesskey(旨在提供键盘热键以跳转到输入)。

打开下面在Firefox中,焦点的框架,然后轰击Alt+ Shift+ x(Windows和Linux)或Ctrl+ Alt+ x(MAC)。

<input type="hidden" accesskey="x" onclick="alert('clicked!');" />

JavaScript 具有元素的焦点事件。共有三个焦点事件:focus、focusin 和 focusout。

我发现当块和无的元素显示状态发生变化时,focusout 将触发,而 focusin 仅在块的显示状态时触发。

document.getElementById('element_id').addEventListener('focusout',function(e){
    if (this.style.display === "none") {
       // perform operations when the element is hidden, like clear fields, etc.
    } else {
       // perform operations when the element is displayed, like populate fields
    }
});