多次/ onchange选择相同的选项而不更改

时间:2010-11-03 22:13:29

标签: javascript prototypejs

我有一个选择,我需要在每次选择一个选项时触发一些js,即使它已被选中。 例如:

<select id="select_one">
    <option value="">Choose One...</option
    <option value="one">One</option>
    <option value="two">Two</option>
</select>

如果有人选择“一个”,我想解雇functionOne()。但是,当选择“one”时,如果用户再次选择“one”,我想再次触发functionOne()。因此,这意味着onChange不起作用,因为选择不会改变。

有人有任何想法吗?

4 个答案:

答案 0 :(得分:4)

与某些当前答案相反,您实际上并未在IE中的click上收到<option>个事件。

检测已被选中的选项的唯一可靠方法是将onclick处理程序放在<select>上。当然,这也会检测到select元素上的任何其他点击,因此根据functionOne()正在做什么,这可能也不安全。

你可能会选择看起来像选择但不喜欢的东西,例如带有按钮的弹出式div。你想做什么?如果您正在尝试执行“跳转菜单”,其中选择一个选项导航到新页面:,这是一个陈旧且不可信的机制,存在严重的可用性问题。

答案 1 :(得分:0)

将onClick添加到<option>标记

答案 2 :(得分:0)

触发onSelect后,将选择值更改为“Add Another”? 例如。 forst选项的id为#selectBox,值为'',html为“Select One”。 onChange,检索值$('#selectBox').val();并在操作后转身并转到$('#selectBox').val('').html('Select Another');

答案 3 :(得分:0)

为每个选项标记添加onclick偶数。在函数内部执行:

function() {
  var timesClicked = $(this).attr('times-clicked') || 0;
  $(this).attr('times-clicked', ++timesClicked);
  if (timesClicked == 1) {
    functionONe();
  }
  else if (timesClicked == 2) {
    functionTwo(); // and so on
  }
}