如何取消选中的选项在选择列表中,当用户确认错误(取消)

问题描述:

我有这样的JavaScript代码:如何取消选中的选项在选择列表中,当用户确认错误(取消)

function change(varam){ 
    if(confirm("Select this option?")) 
    { 

    } else { 
     if(varam=="1") 
     { 
      alert("Return selected to NO"); 
     } else { 
      alert("Return selected to YES"); 
     } 
    } 

} 

和HTML代码:

<select id="sel" name="sel" onchange="change(this.value)"> 
    <option value="1">YES</option> 
    <option value="0">NO</option> 
</select> 

我想要什么:

假设选定的默认值是。如果用户选择NO,显示确认对话框,如果他想改变NO与否,如果选择的是“OK”,NO将被选中的选项,如果选择的是“取消”,那么NO选项没有被选中,但是回到YES选项被选中。反之亦然。

看到这个小提琴:http://jsfiddle.net/CtxUy/

+2

喜欢这个? http://jsfiddle.net/CxxUy/1/ – 2013-02-22 02:03:37

+0

@ExplosionPills:是的。感谢您的解决方案。我不知道它结果简单:D – Fredy 2013-02-22 02:07:05

如果你永远只关心这两个元素,你可以手动设置值:

if(varam=="1") 
{ 
    document.getElementById('sel').value = 0; 
} else { 
    document.getElementById('sel').value = 1; 
} 

如果有其他可能的值,你可以做的就是保持最初选择的值的轨迹并将选择器值设置为拒绝确认时的值,或者如果他们确认,则覆盖该存储值。

像这样:http://jsfiddle.net/CtxUy/2/

+0

我一直在修改我的代码,像这样:http://jsfiddle.net/Jnxhv/ :) – Fredy 2013-02-22 02:17:45

可以遍历的选项,并选择具有selected属性之一。如果没有,请选择第一个(如果缺少selected属性,则始终为默认值)。

var select = document.getElementById('sel'); 
var options = select.options; 
options[0].selected = true; // preemptively select the first option 

for (var i = 0, l = options.length; i < l; i++) { 
    if (options[i].hasAttribute('selected')) { 
     options[i].selected = true; 
     break; 
    } 
} 

DEMO

参考:HTMLSelectElementHTMLOptionElement

+0

谢谢,但你的答案,但我想要的。 – Fredy 2013-02-22 02:19:47