2016-08-03 87 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>