2010-09-03 131 views
1

我試圖通過是/否選項獲取警報消息,點擊'是'重新載入另一個下拉選項,'否'會恢復到以前的選擇。這裏是我想說的(顯然不工作):是/否確認消息

<select size="1" name="m" id="m"> 
    <option selected value="1">apple</option> 
    <option value="2">ball</option> 
    <option value="3">cat</option> 
    <option value="4">dog</option> 
    <option value="5">egg</option> 
</select> 

$('#m').change(function() { 
    var answer = confirm("this will change your selection."); 
    if (answer) { // ie, if i click 'OK' 
     location.reload(); // reload the <select> option below to "selected" 
    } else { 
     break; // revert back to the previous selection 
    } 
}); 


<select size="1" name="a" id="a"> 
    <option selected value="1">aaa</option> 
    <option value="2">bbb</option> 
    <option value="3">ccc</option> 
</select> 

非常感謝提前。隨時登錄click,並進行編輯。

+0

我不認爲'break'可以去那裏 – 2010-09-03 01:55:59

+0

你想從第二個'select'重新加載? – 2010-09-03 01:56:07

回答

2

我不太確定你想完成什麼......是它this

var _selected = $('#m').val(); 
$('#m').change(function() { 
    var answer = confirm("this will change your selection."); 
    if (answer) { // ie, if i click 'OK' 
     _selected = $(this).val(); 
     $('#a').val(_selected); 
    } else { 
     $(this).val(_selected); 
    } 
});​ 
+0

我認爲這是正確的答案,我打算髮布完全相同的解決方案! – 2010-09-03 02:13:50

+0

是的,就是這樣。非常感謝。順便說一句,它在Firefox上正常工作,但不是很正確的Chrome瀏覽器。第二個選擇值沒有完全刷新到默認的「selected」選項,實際上由於某種原因它變爲空白。 – DGT 2010-09-03 02:40:26

+0

@DGT,因爲您使用的是JQuery,所以它應該可以在任何瀏覽器中正常工作。問題在於你的兩個SELECT元素沒有相同數量的OPTION值。你可以通過$('#a')。find(「option [value ='」+ _selected +「'」)「)。size()> 0來檢查一個select是否有給定的值,或者檢查$('#a ').val()== null後設置它的新值。 – 2010-09-03 19:34:24

2

JavaScript的confirm()只顯示OK取消,不沒有

您能return false而不是break,因爲您在function

此外,返回false不取消更改事件。你需要做的是存儲以前的selectedIndex,如果你的confirm()返回false,那麼將selectedIndex設置回上一個。

此外,我希望你在script元素內和$(document).ready()裏面包裝那個jQuery。

+0

謝謝你的幫助。 – DGT 2010-09-03 02:45:22

0

嘗試刪除

break; 

我試圖運行的代碼和Firebug的暫停代碼當它到達的那部分

最好的問候,