我对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分支是我需要解决的问题。那么,如何在当前选定的之前获得所选选项有多困难?
我也感兴趣它会有多难,因为我也可以选择另一条路线,只选择第一个不是'全部'的选项,但如果不太费时,我宁愿避免这样做。
此致 波格丹
答案 0 :(得分:2)
使用onchange事件进行选择。首先存储默认值,然后在更改时重新分配。或者使用2个变量来保留最后2个选定的选项(?)。
更新
使用onfocus
获取更改前的值http://jsfiddle.net/gQHqj/。
在此处理程序中,您可以注册以下onchange
,并将该值存储在闭包中(onfocus的作用域对象)。
更新2
我知道有些事情有点可疑,但没有时间检查,如果用户没有移动到另一个元素或点击元素仍处于焦点位置,onfocus
将不会调用,而onchange
将(如果用户更改值),使用错误的prev值。所以我提出了一个错误修正,你应该有这个结构:http://jsfiddle.net/gQHqj/4/
答案 1 :(得分:1)
您可以将先前选择的值保留在变量中。此变量的值将填充在表单/页面加载上,并仅在选择正确时更新。否则,您将把选择还原为其值。