我無法找到如何設置html下拉框?Javascript,html:如何判斷選項框是否已設置?
好的,我明白我是如何檢查索引一旦被激活並選擇一個項目。但是,我如何確定該盒子沒有被觸摸,並且沒有選擇任何項目?
謝謝。
我無法找到如何設置html下拉框?Javascript,html:如何判斷選項框是否已設置?
好的,我明白我是如何檢查索引一旦被激活並選擇一個項目。但是,我如何確定該盒子沒有被觸摸,並且沒有選擇任何項目?
謝謝。
在這種情況下,select.options.selectedIndex將爲-1。
在下拉選擇框中,將始終選擇一個項目。如果未設置默認值,則所選索引將爲0.在具有大小或多個屬性的選擇框中,如果未選擇任何項目,則索引將爲-1,但OP會專門提到下拉菜單。 – 2010-06-12 15:02:16
@Andy E的頭:我理解他的意思是「沒有選擇的項目」......這是可能的,但你是對的,而不是如果盒子「沒有被觸摸」。自相矛盾的說法。在任何情況下,如果沒有選擇項目,索引將爲-1。它可以設置爲-1來選擇任何東西。 – Robusto 2010-06-12 15:05:00
it * can *可以設置爲-1,但默認情況下它不會設置爲-1。我爲你打了一個很快的例子 - http://jsfiddle.net/fYju6/。這個頁面加載並提醒selectedIndex,它是0. ** edit ** nm,當它實際上是一個協議時,我誤解了你最後的評論作爲參數;-) – 2010-06-12 15:07:52
I don't think there's a native method, but you can add an event listener to call a function when the select is changed:
function addEvent(elm, evType, fn, useCapture) {
if (elm.addEventListener) {
elm.addEventListener(evType, fn, useCapture);
return true;
}
else if (elm.attachEvent) {
var r = elm.attachEvent('on' + evType, fn);
return r;
}
else {
elm['on' + evType] = fn;
}
}
hasBeenTouched = false;
addEvent(selectEl, 'change', function() {
hasBeenTouched = true;
});
使用焦點或模糊事件會更明智一些,因爲如果您選擇列表中當前選定的選項,則更改事件不會觸發。 – 2010-06-12 15:12:38
文檔被加載(天真的window.onload)後,手動設置下拉列表的selectedIndex爲-1(如其他人觀察到的,缺省值是爲否則將被選擇的第一項)
window.onload = function() {
document.getElementById('ddlId').selectedIndex = -1;
};
用戶無法通過瀏覽器界面將下拉列表設置爲未選中狀態,因此您可以通過測試selectedIndex在最初之後的任意點是否仍然爲-1來確保它未被設置和「未被觸摸」自己設置。
這聽起來像你想確保用戶選擇了一個選項,而不是僅僅使用默認選項提交表單。這種情況通常通過在下拉框中有一個「標籤」選項(有時是空白以保持尺寸不變)來實現,該選項默認選中,然後通過驗證檢查以查看是否選擇了另一個選項:
<select>
<option>-- Please choose an option -- </option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
</select>
正確使用驗證(服務器端和客戶端),您可以實現不依賴於Javascript的解決方案來檢查是否正確選擇了選項。
你一定是指「下拉」框嗎?一個項目將始終選擇一個下拉選擇元素。默認選擇的項目將成爲第一個選項,除非另一個具有'selected'屬性。 – 2010-06-12 15:05:03