我有一个下拉选择表单,如下所示:
<select id="selection">
<option>try 1</option>
<option>try 2</option>
<option>try 3</option>
</select>
我只是将这些值定位为:
var selected = $('#selection').val();
现在我该如何定位这些选项中的隐藏值而不是选项标签之间的值?
类似的东西:
<select id="selection">
<option value="selected 1">try 1</option>
<option value="selected 2">try 2</option>
<option value="selected 3">try 3</option>
</select>
定位价值?
答案 0 :(得分:1)
&#34;隐藏价值&#34;您正在引用的,实际上是选项的value属性。标签之间的一个是选项的文本。
当指定value
属性时,JQuery中的.val()
方法将返回正确的值。
var selected = $('#selection').val();
alert(selected);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<select id="selection">
<option value="selected 1">try 1</option>
<option value="selected 2">try 2</option>
<option value="selected 3">try 3</option>
</select>
&#13;
答案 1 :(得分:0)
你根本不需要改变。选项选项的“值”始终为value
属性, EXCEPT ,如果没有定义。当HTML中没有设置“隐藏值”(即value="some value"
)时,代码将默认为为该选项定义的文本。
使用您的代码,<option>try 1</option>
的值(即没有value
属性)是“try 1”,而<option value="selected 1">try 1</option>
的值(即,确实有value
{1}}属性)被“选中1”。
事实上,您真正需要为select选项定义value
属性的唯一时间是您需要捕获的值与显示给用户的值不同。例如,如果您编码<option value="1">1</option>
,则实际上并不需要value
属性。
答案 2 :(得分:0)
如果您想要value属性,那么您可以使用相同的代码
var selected = $('#selection').val();
它将返回您选择的1
但是如果你想获得nodeValue,你可以使用
var selected = $('#selection').val();
var option = $('#selection option');
var selectedValue;
for(var i=0;i<option.length;i++)
{
if(option[i].value==selected)
selectedValue = option[i].childNodes[0].nodeValue;
}
console.log(selectedValue)
它将返回你尝试1