Answers:
var text1 = 'Two';
$("select option").filter(function() {
//may want to use $.trim in here
return $(this).text() == text1;
}).prop('selected', true);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select>
<option value="0">One</option>
<option value="1">Two</option>
</select>
var text1 = 'Two';
$("select option").filter(function() {
//may want to use $.trim in here
return $(this).text() == text1;
}).attr('selected', true);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
<select>
<option value="0">One</option>
<option value="1">Two</option>
</select>
请注意,虽然此方法在高于1.6但低于1.9的版本中可以使用,但从1.6开始不推荐使用。这将无法正常工作在jQuery的1.9+。
val()
应该处理两种情况。
$('select').val('1'); // selects "Two"
$('select').val('Two'); // also selects "Two"
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
<select>
<option value="0">One</option>
<option value="1">Two</option>
</select>
value
在已指定属性的情况下选择by,而在value
缺少属性的情况下仅通过文本进行选择。因此,在此示例中,$('select').val('Two')
将在1.3.x中选择第二个选项,但在1.4.x中将不执行任何操作。
试试这个...选择带有文本myText的选项
$("#my-Select option[text=" + myText +"]").prop("selected", true);
$("#my-Select option[text=" + myText +"]").get(0).selected = true;
时不时地决定采用经典风格:(...
.prop
代替.attr
; 导致更改的原因是,在1.9版中,jQuery禁用了旧的hack,使您可以使用它们.attr
来更改某些DOM属性以及HTML属性。(javascript dom properties vs attributes
如果您不知道区别,请使用Google 。)
.prop('selected', true)
代替.attr('selected', 'selected')
jQuery 1.9+兼容性使用。
$("#myselect option:contains('YourTextHere')").val();
将返回包含文本描述的第一个选项的值。经过测试,可以正常工作。
为了避免所有jQuery版本的复杂性,老实说,我建议使用这些非常简单的javascript函数之一...
function setSelectByValue(eID,val)
{ //Loop through sequentially//
var ele=document.getElementById(eID);
for(var ii=0; ii<ele.length; ii++)
if(ele.options[ii].value==val) { //Found!
ele.options[ii].selected=true;
return true;
}
return false;
}
function setSelectByText(eID,text)
{ //Loop through sequentially//
var ele=document.getElementById(eID);
for(var ii=0; ii<ele.length; ii++)
if(ele.options[ii].text==text) { //Found!
ele.options[ii].selected=true;
return true;
}
return false;
}
这行有效:
$("#myDropDown option:contains(myText)").attr('selected', true);
1.7+的最简单方法是:
$("#myDropDown option:text=" + myText +"").attr("selected", "selected");
1.9+
$("#myDropDown option:text=" + myText +"").prop("selected", "selected");
经过测试和工作。
这是非常简单的方法。请使用它
$("#free").val("y").change();
selectOptions(value[, clear]):
使用字符串作为参数$("#myselect2").selectOptions("Value 1");
或正则表达式按值选择选项$("#myselect2").selectOptions(/^val/i);
。
您还可以清除已选择的选项: $("#myselect2").selectOptions("Value 2", true);
只是旁注。未设置我选择的值。我已经在网上搜索了。实际上,从Web服务回叫后,我必须选择一个值,因为我正在从中获取数据。
$("#SelectMonth option[value=" + DataFromWebService + "]").attr('selected', 'selected');
$("#SelectMonth").selectmenu('refresh', true);
因此,刷新选择器是我唯一缺少的东西。
我在上面的示例中遇到了问题,该问题是由于我的选择框值预填充了固定长度的6个字符的字符串而导致的,但是传入的参数不是固定长度的。
我有一个rpad函数,它将正确填充字符串,达到指定的长度,并带有指定的字符。因此,在填充参数后,它就可以工作了。
$('#wsWorkCenter').val(rpad(wsWorkCenter, 6, ' '));
function rpad(pStr, pLen, pPadStr) {
if (pPadStr == '') {pPadStr == ' '};
while (pStr.length < pLen)
pStr = pStr + pPadStr;
return pStr;
}
$('#theYear').on('change', function () {
FY = $(this).find('option:selected').text();
$('#theFolders').each(function () {
$('option:not(:contains(' + FY + '))', this).hide();
});
$('#theFolders').val(0);
});
$('#theYear').on('mousedown', function () {
$('#theFolders option').show().find('option:contains("Select")', this).attr('selected', 'selected');
});