如何以编程方式设置使用JavaScript的select框元素的值?
我有以下HTML <select>元素: 
 <select id="leaveCode" name="leaveCode"> <option value="10">Annual Leave</option> <option value="11">Medical Leave</option> <option value="14">Long Service</option> <option value="17">Leave Without Pay</option> </select> 
 使用带有leaveCode编号的JavaScript函数作为参数,如何在列表中select适当的选项? 
 function SelectElement(valueToSelect) { var element = document.getElementById('leaveCode'); element.value = valueToSelect; } 
如果你使用jQuery,你也可以这样做
 $("#leaveCode").val("14"); 
这将select值为14的选项
 function setSelectValue (id, val) { document.getElementById(id).value = val; } setSelectValue('leaveCode', 14); 
我比较了不同的方法:
比较如何用JS或jQuery设置select的值的不同方法
码:
 $(function() { var oldT = new Date().getTime(); var element = document.getElementById('myId'); element.value = 4; console.error(new Date().getTime() - oldT); oldT = new Date().getTime(); $("#myId option").filter(function() { return $(this).attr('value') == 4; }).attr('selected', true); console.error(new Date().getTime() - oldT); oldT = new Date().getTime(); $("#myId").val("4"); console.error(new Date().getTime() - oldT); }); 
在〜4000元素select输出:
1毫秒
58毫秒
612毫秒
使用Firefox 10.注意:我做这个testing的唯一原因,是因为jQuery在我们的列表上执行了超过2000个条目(它们在选项之间有更长的文本)。 我们有一个val()之后大约2秒的延迟
还要注意:我是根据实际值设置值,而不是文本值
不回答问题,但您也可以通过索引select,其中我是您希望select的项目的索引:
 var formObj = document.getElementById('myForm'); formObj.leaveCode[i].selected = true; 
您也可以循环显示项目以循环显示值:
 for (var i = 0, len < formObj.leaveCode.length; i < len; i++) if (formObj.leaveCode[i].value == 'xxx') formObj.leaveCode[i].selected = true; 
 document.getElementById('leaveCode').value = '10'; 
这应该将select设置为“年假”
我尝试了以上基于JavaScript / jQuery的解决scheme,例如:
 $("#leaveCode").val("14"); 
和
 var leaveCode = document.querySelector('#leaveCode'); leaveCode[i].selected = true; 
在AngularJS应用程序中,有一个必需的 <select>元素。
他们都没有工作,因为AngularJS表单validation没有被解雇。 虽然select了正确的选项(并在表单中显示),但input仍然无效( ng-pristine和ng-invalid类仍然存在)。
要强制AngularJSvalidation,请在select一个选项后调用jQuery change() :
 $("#leaveCode").val("14").change(); 
和
 var leaveCode = document.querySelector('#leaveCode'); leaveCode[i].selected = true; $(leaveCode).change(); 
function foo(value) { var e = document.getElementById('leaveCode'); if(e) e.value = value; }function foo(value) { var e = document.getElementById('leaveCode'); if(e) e.value = value; }
 最简单的方法,如果你需要: 
  1)点击定义select选项的button 
  2)转到另一个页面,select选项 
  3)在另一个页面上select了该选项值 
1)你的button链接(比如在主页上)
 <a onclick="location.href='contact.php?option=1';" style="cursor:pointer;">Sales</a> <a onclick="location.href='contact.php?option=2';" style="cursor:pointer;">IT</a> 
(其中contact.php是你的页面select选项。请注意页面url有?选项= 1或2)
2)把这个代码放在你的第二页(我的情况contact.php )
 <? if (isset($_GET['option']) && $_GET['option'] != "") { $pg = $_GET['option']; } ?> 
3)根据点击的buttonselect选项值
 <select> <option value="Sales" <? if ($pg == '1') { echo "selected"; } ?> >Sales</option> <option value="IT" <? if ($pg == '2') { echo "selected"; } ?> >IT</option> </select> 
  .. 等等。 
 所以这是通过GET方式将值传递给另一个页面(带有select列表)的简单方法。 没有forms,没有ID ..只有3个步骤,它的作品完美。 
为什么不为元素的ID添加一个variables,并使其成为一个可重用的函数?
 function SelectElement(selectElementId, valueToSelect) { var element = document.getElementById(selectElementId); element.value = valueToSelect; } 
假设你的表单被命名为form1 :
 function selectValue(val) { var lc = document.form1.leaveCode; for (i=0; i<lc.length; i++) { if (lc.options[i].value == val) { lc.selectedIndex = i; return; } } } 
应该是这样的话:
 function setValue(inVal){ var dl = document.getElementById('leaveCode'); var el =0; for (var i=0; i<dl.options.length; i++){ if (dl.options[i].value == inVal){ el=i; break; } } dl.selectedIndex = el; } 
有不同的方法来select使用Javascript下拉的值 。
你最有可能想要这个:
 $("._statusDDL").val('2'); 
要么
 $('select').prop('selectedIndex', 3); 
使用Jquery:
 $('leaveCode').prop('selectedIndex', 10); 
如果使用PHP,你可以尝试这样的事情:
 $value = '11'; $first = ''; $second = ''; $third = ''; $fourth = ''; switch($value) { case '10' : $first = 'selected'; break; case '11' : $second = 'selected'; break; case '14' : $third = 'selected'; break; case '17' : $fourth = 'selected'; break; } echo' <select id="leaveCode" name="leaveCode"> <option value="10" '. $first .'>Annual Leave</option> <option value="11" '. $second .'>Medical Leave</option> <option value="14" '. $third .'>Long Service</option> <option value="17" '. $fourth .'>Leave Without Pay</option> </select>'; 
恐怕我目前无法testing,但在过去,我相信我必须给每个选项标签一个ID,然后我做了这样的事情:
 document.getElementById("optionID").select(); 
如果这不起作用,也许会让你更接近解决scheme:P