0

我有以下情况,

<select id="dropDown" onChange="this.options[this.selectedIndex].onclick();>
<c:forEach items="" var="...">
<c:choose>
<c:when test="">
<option id="<portlet:namespace />..." value="red" onclick="<portlet:namespace />SomeFunction(this.id, 'Contants.SOME_ID', '<c:out value="${some_value}"/>)">red</option>
</c:when>
<c:when test="">
<option id="<portlet:namespace />..." value="yellow" onclick="">yellow</option>
</c:when>
<c:when test="">
<option id="<portlet:namespace />..." value="blue" onclick="">blue</option>
</c:when>
</c:choose>
</c:forEach>
</select>

当我选择值说黄色时,根本没有警报,只有当页面第一次加载或者我按 F5 刷新页面时,我才会看到一个警告说“红色”。我无法提醒所选值。

var selected_item = $('#dropDown').val();
alert(selected_item);

有什么我想念的吗?

编辑

我已经为 onClick 添加了示例函数,这就是我在选项字段中使用 onClick 的原因。因此,对于其中的每一个,我都会调用不同的函数。无论如何要获得所选选项的值。

<portlet:namespace />SomeFunction(id, some_id, some_value) {

}
4

2 回答 2

1

onclick在选项中什么也不做。由于您使用的是 jQuery,因此您根本无法使用内联 javascript。

删除onChange="this.options[this.selectedIndex].onclick();所有onclick="",然后尝试

$(function() {
  $('#dropDown').change(function() {
     alert($(this).val());
  });
});
于 2012-07-16T15:34:32.593 回答
0

由于您使用的是 jQuery,因此您不需要onclick每个都删除它们option并尝试使用事件。onChangeselect..on()change

$('#dropDown').on('change', function() {
   var selected_item = this.value;
   alert( selected_item );
});

如果您尝试selected_item在页面加载时更新变量的值,则可以触发更改事件,如下所示:

$('#dropDown').on('change', function() {
   var selected_item = this.value;
   alert( selected_item );
}).change(); // trigger the change event at page load
于 2012-07-16T15:38:49.250 回答