如何监控隐藏输入元素的值?

时间:2009-04-28 05:10:49

标签: javascript html javascript-events

我有一个SELECT元素,每次点击OPTION时都会通过Javascript将其值添加到隐藏的INPUT(以及每个选择的可视化表示),并且我希望能够监视另一个Javascript函数的更改。为了模块化,我无法将第二个函数集成到第一个函数中。我也不想轮询隐藏的INPUT的值来避免黑客攻击。目前我正在使用包含SELECT和隐藏INPUT的DIV上的onclick事件,但这也很糟糕。您是否知道监视隐藏的INPUT元素以进行更改的方法?

1 个答案:

答案 0 :(得分:3)

所以,你有:

  • 功能A,用于更新隐藏的输入。
  • 功能B,应在更新INPUT时调用。

为什么不创建自己的“事件”,即功能A在完成工作时调用/调度?

我相信大多数Javascript框架都很容易支持自定义事件的概念,但它只是一系列函数调用。

例如,创建一个对象D,它表示单个事件的调度程序。是的,这很愚蠢,但我试图保持简单的概念。这个对象D包含一个已为其事件“注册”的函数列表,当调度该事件时,它会调用这些函数。

类似的东西:

var d = (function() {
    var funcs = [];

    function fire() {
        for (var i=0; i<funcs.length; ++i) {
          funcs[i].call();
        }
    }

    function register(newfunc) {
        funcs.push(newfunc);
    }    

    return {
        fire: fire,
        register: register
    };
})();

你还有两件事要做 - 让函数A触发事件:

function A() {

    // do stuff to update the INPUT

    d.fire();
}

以及onload,“注册”事件发生时要调用的函数B:

d.register(B);

这种方法保持了模块分离原则(或其所谓的任何原则),因为A和B对彼此一无所知,只需知道第三个对象。