我正在使用@ Html.DropDownListFor。我没有填充下拉列表的问题,但我无法使用JQuery设置所选值。这是代码的简化版本。
@{
var listItems = new List<ListItem>
{
new ListItem { Text = "Select Question", Value = "Select Question" },
new ListItem { Text = "test", Value = "test" }
}
<div class="row">
@Html.LabelFor(m => m.SecurityQuestion, new { @class = "control-label" })
</div>
<div class="row">
@Html.DropDownListFor(m => m.SecurityQuestion, new SelectList(listItems, "Value", "Text"), new { id = "security", @class = "securityALLQuestion" })
</div>
<div class="row">
@Html.LabelFor(m => m.SecurityQuestion1, new { @class = "control-label" })
</div>
<div class="row">
@Html.DropDownListFor(m => m.SecurityQuestion1, new SelectList(listItems, "Value", "Text"), new {id="security1", @class="security" })
</div>
这是我的Javascript函数来设置它。我从#security下拉列表中获取所有值,然后使用它来设置#security1下拉列表。
$('.security').on('change', function () {
var values = [];
var optionValues = [];
$('#security option').each(function () {
values.push($(this).attr('value'));
});
for (var i = 0; i < values.length; i++) {
optionValues[i] = "<option value=\"" + values[i] + "\">" + values[i] + "</option>";
}
var temp ='test'
$('#' + 'security1').html('').html(optionValues);
$('#' + 'security1').val(temp);
})
值[]和optionValues []的值与预期一致。
在检查控制台时,我得到temp的值,但整个语句的警告为null。我错过了什么吗?
可能的问题:是因为我只是设置值而不是问题的文本吗?
答案 0 :(得分:0)
这需要做两件事:
首先,确保您正确选择了select元素。使用console.log
将$('#' + security1)
的值输出到浏览器的开发者控制台。另外,请确保JavaScript变量security1
都存在,并保留您期望的相应ID。
一旦确定jQuery元素引用是好的,请查看生成的页面HTML中的选项(查看源代码)。检查temp
的值(可能将其记录到控制台以确定)并将其与这些选项的值属性进行比较。它必须与完全匹配,否则不会将选项标记为已选中。
答案 1 :(得分:0)
这将解决
$("#custom_address_to").get(0).selectedIndex = 1;
如果要在下拉菜单中选择第一个元素