无法使用JQuery设置下拉列表的值

时间:2017-01-03 18:46:07

标签: javascript c# jquery asp.net-mvc razor

我正在使用@ 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。我错过了什么吗?

可能的问题:是因为我只是设置值而不是问题的文本吗?

2 个答案:

答案 0 :(得分:0)

这需要做两件事:

  1. 您对select元素
  2. 有一个有效的jQuery引用
  3. 您尝试设置完全的值与其中一个包含的选项元素的value属性匹配。
  4. 首先,确保您正确选择了select元素。使用console.log$('#' + security1)的值输出到浏览器的开发者控制台。另外,请确保JavaScript变量security1都存在,并保留您期望的相应ID。

    一旦确定jQuery元素引用是好的,请查看生成的页面HTML中的选项(查看源代码)。检查temp的值(可能将其记录到控制台以确定)并将其与这些选项的值属性进行比较。它必须与完全匹配,否则不会将选项标记为已选中。

答案 1 :(得分:0)

这将解决

$("#custom_address_to").get(0).selectedIndex = 1;

如果要在下拉菜单中选择第一个元素