我对 javascript 没有太多经验,所以我不确定是否/如何做到这一点。所以我有许多精选组件和几个选项。所有组件的这些选项之一是“全部”。
现在我需要确保不超过一个组件选择了“全部”。我正在使用一些输入字段并进行一些验证以确保此条件成立。但是我不知道如何执行以下操作。当用户从字段中选择“全部”时,这是不允许的,因为页面上已经有“全部”,将之前的选择放在原来的位置。
到目前为止我所拥有的是(组件是当前选择的组件):
selectedName = component.options[component.selectedIndex].innerHTML;
if (selectedName == 'All') {
if (emptyAllSpace() == 1) {
//here I do all the mumbo jumbo needed and assign to the hidden field the name of
//the component
}
else {
//Here is where I should put back the old selection value.
}
}
现在 else 分支是我需要解决问题的地方。那么我怎样才能/在当前选择的选项之前获得所选选项有多困难。
我也很感兴趣这会有多困难,因为我也可以走另一条路线,只需选择第一个不是“全部”的选项,但如果不太耗时的话,我宁愿避免这种情况。
问候, 博格丹
最佳答案
使用 onchange 事件进行选择。首先存储默认值,并在更改时重新分配它。或者使用 2 个变量来保留最后 2 个选定的选项(?)。
更新
使用onfocus
获取更改之前的值,http://jsfiddle.net/gQHqj/ 。
在此处理程序中,您可以注册以下 onchange
,并将该值存储在闭包中(onfocus 的作用域对象)。
更新2
我知道有些事情有点可疑,但没有时间检查,如果用户没有移动到另一个元素或单击该元素仍然处于焦点的某个位置,并且 onfocus
不会被调用,而 onchange
会被调用(如果用户更改该值),并且上一个值错误。所以我想出了一个错误修复,你应该有这个结构:http://jsfiddle.net/gQHqj/4/
关于javascript 选择输入上一个选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7077289/