0

我在一个选择框(usageDisplays)上有一个 onChange 事件,它根据第一个选择框的选定值填充下一个选择框:

<html:select name="usageDisplays" property="name" indexed="true" onchange='<%="populateYearsList(" + Id + "," + name + ")"%>' />

当用户选择usageDisplays中的值时,这可以正常工作,但是当根据页面前面的单选按钮选择设置usageDisplays的值时,这根本不起作用

getElementByName("usageDisplay.name").value = userName;
4

1 回答 1

2

嗨 onchange 只会在选择值必须更改但在页面加载时才会触发,它不会先选择任何内容然后更改

以编程方式更改值不会触发更改事件,仅当用户聚焦元素、更改值然后将焦点放在其他位置时才会发生更改事件。

选项是手动调用 onchange 侦听器,在元素上分派 change 事件,或者通过向上 DOM 查找具有 onchange 侦听器的父级并调用它们来手动冒泡 change 事件。

这是一个似乎符合要求的答案:手动触发 onchange 事件

一些链接:

MDN dispatchEvent (standards compliant): https://developer.mozilla.org/en/DOM/element.dispatchEvent
MSDN fireEvent (IE proprietary): http://msdn.microsoft.com/en-us/library/ie/ms536423(v=vs.85).aspx
于 2013-05-21T10:05:58.323 回答