HTML Hidden控件是否有任何事件?喜欢onchange还是什么?

时间:2009-06-16 18:06:54

标签: javascript html dom

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

3 个答案:

答案 0 :(得分:36)

事件仅在用户在浏览器中执行事件时触发,因此如果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>

答案 1 :(得分:1)

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

在Firefox中打开以下内容,聚焦框架,然后按 Alt + Shift + x (Windows和Linux)或 Ctrl + Alt + x (Mac)。

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

答案 2 :(得分:0)

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

我发现当元素的显示状态对于块的任何一个都没有改变时,聚焦将触发,而对块的元素的显示状态仅触发聚焦。

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
    }
});