javascript选择输入上一个选择

时间:2011-08-16 11:12:42

标签: javascript

我对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分支是我需要解决的问题。那么,如何在当前选定的之前获得所选选项有多困难?

我也感兴趣它会有多难,因为我也可以选择另一条路线,只选择第一个不是'全部'的选项,但如果不太费时,我宁愿避免这样做。

此致 波格丹

2 个答案:

答案 0 :(得分:2)

使用onchange事件进行选择。首先存储默认值,然后在更改时重新分配。或者使用2个变量来保留最后2个选定的选项(?)。

更新

使用onfocus获取更改前的值http://jsfiddle.net/gQHqj/。 在此处理程序中,您可以注册以下onchange,并将该值存储在闭包中(onfocus的作用域对象)。

更新2

我知道有些事情有点可疑,但没有时间检查,如果用户没有移动到另一个元素或点击元素仍处于焦点位置,onfocus将不会调用,而onchange将(如果用户更改值),使用错误的prev值。所以我提出了一个错误修正,你应该有这个结构:http://jsfiddle.net/gQHqj/4/

答案 1 :(得分:1)

您可以将先前选择的值保留在变量中。此变量的值将填充在表单/页面加载上,并仅在选择正确时更新。否则,您将把选择还原为其值。