2016-08-03 90 views
3

如何獲取期權價值。我想根據選定的選項值更改name="<value>"。 以便我可以將姓名值與onChange=""一起發送給彈簧控制器。如何根據期權值更改HTML選擇名稱

我想根據選項選擇值更改select name="report/leavereport/weeklysummery"

<select name="" onChange="document.getReportAll.submit()"> 
     <option value="">Select Report Type</option> 
     <option value="report">TIME REPORT</option> 
     <option value="leavereport">LEAVE REPORT</option> 
     <option value="weeklysummery">TIME SUMMARY</option> 
</select> 

謝謝

+0

document.getElementsByTagName( 「選擇」)[0]。名稱= document.getElementsByTagName( 「選擇」)[0]。價值 –

+2

這似乎很奇怪的要求。通常,表單提交和字段*值*之間的字段*名稱*是一致的。 –

+0

如果有人在未啓用JavaScript的情況下訪問,您是否會遇到問題? – gcampbell

回答

1

最短的變化,因爲代碼和現代瀏覽器,將是:

onChange="this.name = this.value; document.getReportAll.submit()" 

...因爲屬性事件處理程序中,this指選擇元素和現代瀏覽器在單選中將選項值反映爲value

+0

是的,它爲我工作,非常感謝 – Balu

0

將ID設置爲select

<select id="select"...>...</select> 

然後設置onchange事件select元件。它在選擇選項時觸發。

如果選擇器value未定義,那麼瀏覽器不支持它,所以可以讓選定的元素迭代選項並檢查是否包含屬性selected。我不會使用querySelector,因爲舊版瀏覽器可能不支持它。

var selector = document.getElementById('select'); 

selector.onchange = function() { 

    var value = this.value; 

    if(!value) { 

     for(var i = 0, op; op = selector.children[i]; i ++) { 
      // Check if the attribute selected is valid 
      if(op.getAttribute('selected')) { 
       value = op.value; 
       break; 
      } 
     } 

    } 

    this.name = value; 

}; 
0

下面是使用getAttributesetAttribute一個可能的(不顯眼)溶液。

腳本監聽對任何options的點擊,然後更新的selectname屬性的值的基礎上,optionvalue屬性的值。

var options = document.getElementsByTagName('option'); 
 

 
function changeName() { 
 
var value = this.getAttribute('value'); 
 
window.alert('name = "' + value + '"'); 
 
this.parentNode.setAttribute('name',value); 
 
} 
 

 
for (var i = 0; i < options.length; i++) { 
 
options[i].addEventListener('click',changeName,false); 
 
}
<select name=""> 
 
<option value="">Select Report Type</option> 
 
<option value="report">TIME REPORT</option> 
 
<option value="leavereport">LEAVE REPORT</option> 
 
<option value="weeklysummary">TIME SUMMARY</option> 
 
</select>