2013-02-22 20 views
3

我有這樣的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

回答

1

如果你永遠只關心這兩個元素,你可以手動設置值:

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

0

可以遍歷的選項,並選擇具有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

相關問題