2013-07-29 28 views
0

如果選擇先前未選擇的選項,則onChange處理程序可以檢測到該選項。如何檢測預選選項(即選擇字段是否選擇了任何選項)?這可能沒有jQuery?是否有處理程序,例如onSelected(與突出顯示文本的onSelect不同)?是否有任何處理程序可以檢測選擇字段是否選擇了沒有jQuery的任何選項

實施例:

<select onSelected="FunctionRunIfOptionSelected()"> 
<option> ... </option> 
... 
</select> 

預選選項將已經在頁面加載選擇。即,與HTML動態地呈現:

<option selected> ... </option> 
+0

預選值總是一樣嗎?還是未知? –

+0

@CrazyTrain它是未知的 – reformed

+0

你可以修改選擇的渲染嗎?如果是這樣,你可以使用'data-'屬性給'select'引用原始索引,如'data-selected = 4'。然後在你的處理程序中比較if(select_elem.getAttribute(「data-selected」)!== select_elem.selectedIndex){...' –

回答

0

如果我明白了,那麼任務是告訴一個選項是否將所選屬性硬編碼到HTML中?如果是的話,這應該工作:

function test() { 
    var opts = document.getElementById("myselect").options; 
    var i, len = opts.length; 
    for(i = 0; i < len; i++) { 
     if (opts[i].getAttribute("selected") != null) { // opts[i] has the selected attribute 
      change_other_select(i); // pass the option index to your other function 
      break; 
     } 
    } 
} 

window.onload = test; 

訣竅是選擇的屬性和所選屬性來區分,也是一個空值和空字符串之間。

+0

是的,但是這是必須調用的函數來檢查是否選擇了一個選項。如何自動檢測選項是否被選中,就像onChange()處理程序自動檢測何時更改選項一樣? – reformed

+0

我很困惑。總是選擇一個選項。我真的不知道你需要什麼,但沒有回答。也許你可以用另一種方式來問它? (對不起)等待!你的意思是你想知道是否選擇了_specific_選項? – 2013-07-29 20:07:36

+0

爲選擇字段選擇的選項將決定將在第二個選擇框中加載哪些選項。當我更改第一個選擇框的選項時,這工作正常。但是,如果頁面被加載,其中的選項是用選定的屬性進行硬編碼的呢?它不會自動加載第二個選擇框的選項。 – reformed

0
var myselect = document.getElementByid('selectid');   
myselect.options[myselect.selectedIndex]; 
0

如果選擇字段沒有選擇這樣的默認值,您可以檢測:

var selects = document.getElementsByTagName("select"); 
for (i=0;i<selects.length;i++) { 
    if (selects[i].selectedIndex != 0) { 
     eval(selects[i].getAttribute("onSelected")); 
    } 
} 
+0

當選擇值改變時,我可以調用一個函數。但是,當select在頁面加載時已經有一個值時,什麼事件處理函數可以調用一個函數?例如,如果頁面加載了選定的特定選項,如何調用一個函數? OnChange =「Function()」將不起作用。 – reformed

+0

選擇標籤始終選擇一個選項。除非另有說明,它總是第一個。你是說你想要檢測選擇的選項是否不是默認選項? –

+0

是的。有沒有可以檢測到這個並且調用一個函數的事件?像onChange – reformed

0

爲了測試在頁面加載所選的選項,您需要在window.onload處理程序中捕獲這些處理程序

加載一個頁面,您需要繼續使用onChange處理程序,但使用selectedIndex屬性來測試這是否填充您的選項列表中的索引。

或者在HTML中給出選項值並檢查值本身。這將允許在擴展選項列表時確定性行爲。

+0

請參閱編輯 – reformed

+0

乾杯,更新我的回答 – Sparko

0

是,使用.options[].selectedIndex方法,您可以乾淨,悄悄地處理這個問題,像這樣:

HTML

<select name="select" id="select"> 
    <option value="">...</option> 
    <option value="1">One</option> 
    <option value="2" selected="selected">Two</option> 
</select> 

的JavaScript

window.onload = function(){ 
    var select = document.getElementById("select"), selected = select.value; 
    select.onchange = function(){ 
     var val = select.options[select.selectedIndex].value; 
     if(val != selected) { 
      alert("Another value " + val + " was selected, which is not the same as the default value of " + selected); 
     } else { 
      alert("Same value as the default of " + selected + " was selected"); 
     } 
    }; 
}; 

從JS中,你可以檢查並根據需要操作val變量。

+0

onChange處理程序檢測值何時更改。什麼樣的處理程序可以檢測何時選擇了默認值以外的值?例如,如果其中一個選項是動態呈現的<選項選擇>一個? – reformed

+0

'onchange'對此很好,只需抓住初始值並將其存儲在變量中,並使用條件來檢查值。我已經更新了我的答案來做到這一點。 – faino

相關問題