Javascript 单击“选择”框中的“已选定”选项

Javascript 单击“选择”框中的“已选定”选项,javascript,html,css,drop-down-menu,html-select,Javascript,Html,Css,Drop Down Menu,Html Select,这看起来应该很容易,但是对象的限制相当令人恼火。我有一个包含四个选项的选择框,当您导航到某个页面时,该选项将设置为您所在的页面。我想这样做,用户可以通过选择相同的选项来刷新页面-也就是说,选择已经选择的选项 不幸的是,onclick事件不能跨浏览器工作。大多数人建议使用onchange,但在我所说的情况下,这不起作用。我一直采用的方法是在顶部添加一个额外的项,该项保存当前选定的内容,单击时不执行任何操作,然后在触发onchange事件后切换到该选项,这样当用户重新选择该选项时,他们实际上正在更改

这看起来应该很容易,但是
对象的限制相当令人恼火。我有一个包含四个选项的选择框,当您导航到某个页面时,该选项将设置为您所在的页面。我想这样做,用户可以通过选择相同的选项来刷新页面-也就是说,选择已经选择的选项

不幸的是,
onclick
事件不能跨浏览器工作。大多数人建议使用
onchange
,但在我所说的情况下,这不起作用。我一直采用的方法是在顶部添加一个额外的项,该项保存当前选定的内容,单击时不执行任何操作,然后在触发onchange事件后切换到该选项,这样当用户重新选择该选项时,他们实际上正在更改。但这很尴尬,因为在下拉列表中有两个相同的项目,我不应该这样做

解决此问题的跨浏览器好方法是什么?不太复杂的东西和常规JavaScript的东西会更好。

这可能会有帮助:

聚焦功能(元素){
element.setAttribute('old-value',element.value);
元素。值=“”;
console.log('reset');
}
函数onBlur(元素){
如果(元素值=“”)
element.value=element.getAttribute('old-value');
元素。removeAttribute(“旧值”);
}
函数onChange(元素){
console.log('新值:'+元素.Value);
}

一
二
三

这是您的解决方案

$("select[id=mySelect] option").click(function(){
    alert("HI");
});

每次单击某个选项时,都会发出警报-HI-。选择框中也进行了更改,事件也已执行。

从用户界面的角度来看,您刷新站点的方式似乎不是很好。让一些东西对用户来说更简单也会让你编写代码更简单。想想看:)我同意史蒂夫的观点。这是选择框控件的非标准用法。你最好在某个地方使用一个小的刷新图标(或者让用户点击F5)。这不是我的主意,但当我在走廊进行可用性测试时,人们一直试图这样做来清除他们的选择。这里可能有重复的问题:这很好,除非用户在做出选择后必须在选择框外单击。