2011-07-16 71 views
2

我正在寫一個小腳本來測試表單在提交之前是否已被更改。所以正常輸入(文本,textarea等)我可以使用:HTML <select> defaultValue屬性(但不是<option selected ='selected'>變體)

if(element.defaultValue != element.value) { 
    altered[element.name] = element.value; 
    element.value = element.defaultValue; 
} 

這工作正常。但看起來選擇輸入沒有一個要檢查。雖然在Firebug中它確實出現在DOM列表中,但是以黑色(而不是綠色)顯示,我相信這意味着它是由瀏覽器添加的(糾正我,如果我錯了)。

如果我記錄select元素的element.defaultValue,它將返回undefined

所以我的問題,確實有一個defaultValue屬性?或者我可以利用一些替代方案?

回答

1

如果不設置<select>元件上的默認選項(或者,如果你總是選擇第一個選項爲默認),你可以嘗試:

if(element.selectedIndex && element.selectedIndex != 0) { 
    //this handles <select> inputs 
    altered[element.name] = element.options[element.selectedIndex].value; 
    element.selectedIndex = 0; 
} 
else if(element.defaultValue != element.value) { 
    //this handles any other kind of input (except not really for checkbox, radio, etc.) 
    altered[element.name] = element.value; 
    element.value = element.defaultValue; 
} 
+0

我看你正在做在這裏,我希望能利用內置的性能,所以我沒有保持獨立的路徑變量/數組。如果我的解決方案類似,我可能會使用jQuery的元類 – Chris

+0

這是最接近我找到的答案。 – Chris

1

默認選項的屬性defaultSelected設置爲true。

您可以使用下面的方法得到JQuery的默認選擇:

$('#ddlReceivingStore').children('option[defaultSelected="true"]') 
相關問題