xzc*_*xzc 5 html javascript jquery select drop-down-menu
我一直在寻找这个问题的答案已有一段时间了,最大程度上没有运气或错误的解决方案。
我面临的问题是我有一个select元素(显然)在选择已选择的项目时不会触发“ onchange”事件。
像这样:
<select onchange="alert(this.value);">
<option>1</option>
<option>2</option>
<option>3</option>
</select>
Run Code Online (Sandbox Code Playgroud)
现在,说我首先选择项目1。然后,我需要再次选择项目1。
此功能对于我正在从事的项目的成功至关重要。
任何帮助是极大的赞赏。
编辑:(更多信息)
此功能是必需的,因为我正在使用带有谷歌地图的项目进行工作,在该项目中,向用户展示带有下拉菜单的演示文稿以快速跳至某个国家(例如,在下拉菜单中选择“西班牙”,谷歌地图将西班牙设置为视图)。
问题出在您想去西班牙,然后在地图上拖动并最终到达意大利时。现在您想回到西班牙,但是您无法从下拉菜单中选择它,直到您先选择其他东西。我的老板不喜欢这样:)
Edit2:解决方案
因此,现在有一些解决方案。其中之一是将动作模糊处理(当使控件失去焦点时),这可以起作用,因为我可以使onchange列表模糊,但是对于再次选择同一项目的人来说,模糊控件的触发器不会消失,除非他们切换他们自己集中精力,他们不会看到地图的变化。
仍然我不明白,为什么很难找到一些在选项选择/单击/模糊或其他方面引起麻烦的事件。请继续看我自己,然后稍后再回到这里。
编辑3:最终解决方案
没错,所以我终于设法使这项工作变得不尽如人意,但无论如何现在还是足够接近。
我想到的解决方案是在选择的顶部添加“请选择国家”选项。然后,在更改时,我将文本和“请选择国家”的值更改为所选项目的文本,并将所选索引重置为0。这样,例如在选择西班牙时,它将位于页面顶部列出处于禁用状态的列表,然后进一步列出处于工作状态的列表。因此,即使您仍处于选中状态,您也可以点击列表中间的西班牙以返回到西班牙(最上面的一项是
想法很简洁,由同事提供。
脚本如下:
var dummyOption;
function setdummyCountry(obj)
{
var selectedOption = obj.options[obj.selectedIndex];
if (dummyOption != null) {
dummyOption.text = selectedOption.text;
dummyOption.value = selectedOption.value;
}
else {
dummyOption = document.createElement("option");
dummyOption.text = selectedOption.text;
dummyOption.value = selectedOption.value;
dummyOption.setAttribute("disabled", "true");
obj.options[0] = dummyOption;
}
obj.selectedIndex = 0;
}
<select onchange="setdummyCountry(this);">
<option value="">Please select country</option>
<option value="ES">spain</option>
<option value="SE">sweden</option>
<option value="NO">norway</option>
</select>
Run Code Online (Sandbox Code Playgroud)
我希望这会对某人有所帮助!
对于那些试图帮助我的人,感谢您的想法和时间。
这可能不完全是您想要的,但这是您可以决定的另一种选择。选择选项后,将其恢复为默认(空的/第一个)选项
<select onchange="alert(this.value);this.value='';">
<option value='' selected='selected'></option>
<option>1</option>
<option>2</option>
<option>3</option>
</select>
Run Code Online (Sandbox Code Playgroud)
或者你可以做
<select onblur="alert(this.value);">
<option>1</option>
<option>2</option>
<option>3</option>
</select>
Run Code Online (Sandbox Code Playgroud)
但这种方式会在用户离开/模糊/取消焦点列表时调用您的函数(警报):p
| 归档时间: |
|
| 查看次数: |
7664 次 |
| 最近记录: |