如何在更改字段时触发事件处理程序?

时间:2013-11-27 15:15:55

标签: javascript ajax prototypejs

现在我有这个:

Event.observe(
        'hidden', 
        'keydown', 
        itemOptions["_something"].showButtonsForThat
    );

showButtonsForThatshowButtonsForThat : function(){....function body....}

但我需要添加其他事件处理程序:

 Event.observe(
        'inputF',
        'keydown',
        function() { document.getElementById('hidden').value = document.getElementById('inputF').value; }
    );
Event.observe(
        'inputF',
        'blur',
        function() { document.getElementById('hidden').value = document.getElementById('inputF').value; }
    );

每次我更改hidden字段中的内容时,都会更改input字段的值。现在我希望第一个事件处理程序(关于hidden元素)在其值发生变化时触发(根据input字段中的任何内容进行更改。

我尝试使用eventName 'change'但未成功。不知何故在html元素+ jQuery等中使用onchange="myFoo();"不起作用。也许我的语法错位错误,但我尝试了很多东西并遵循不同的例子。

澄清:我想观察hidden的变化,因为当我在inputF输入不同内容时,它会自动更改。所以我基本上不会与hidden进行互动。

2 个答案:

答案 0 :(得分:1)

如果没有一种传统方式适合您,您可以简单地使用解决方法,如下所示:

Event.observe(
        'inputF', 
        'keyup', 
        itemOptions["_something"].showButtonsForThat
    );

这意味着您仍会观察inputF字段,但会在此处调用您需要的功能。无论如何,你将在更改hidden时调用处理程序,另一方面,它会随inputF一起更改,这意味着更改任一字段同时发生并出于同一目的。

P.S。更好地使用keyup事件名称(如我的示例所示),因为keydown需要再单击一次,以便更新最后一个符号。即,如果您在inputF中输入 asde ,则hidden中将包含 asd ,除非您使用键盘再次单击。使用keyup,您将不会遇到此问题。

答案 1 :(得分:1)

var h = document.getElementById('hidden'), 
    f = function() { h.value = this.value; };
Event.observe('inputF','keydown', f);
Event.observe('inputF','blur', f);
...