<option>值未设置

时间:2016-10-11 14:40:59

标签: javascript jquery

我有一个ajax调用返回的数据,我正在为每个返回的数据行创建一个选项(下拉选择)元素,我需要根据文本选择其中一个默认选择。但价值并没有分配给我所做的那个&#34;选择&#34;。以下是我的代码:

$.each(JSON.parse(r.d), function (key, value) {
  if (value == 'Username') {
    $('#ddlcriteria1')
      .append($('<option selected="selected">', { value: key })
        .text(value));
  }
  else {
    $('#ddlcriteria1')
      .append($('<option>', { value: key })
        .text(value));
  }
});

我为每个返回的行添加一个选项元素,并将默认选择的元素设置为&#34;用户名&#34;。在添加完这个之后我查看DOM。我明白这一点:

  <option value="1">First Name</option>
  <option value="2">Last Name</option>
  <option selected="selected">Username</option>
  <option value="4">Email</option>
  <option value="8">Department</option>
  <option value="9">Status</option>
  <option value="10">Position</option>
  <option value="11">Role</option>
  <option value="12">User Group</option>
  <option value="13">Course Code</option>
  <option value="15">Enrollment Location</option>
  <option value="16">Organization</option>

选项元素&#34;用户名&#34;文本没有赋值,知道为什么会发生这种情况吗?

5 个答案:

答案 0 :(得分:4)

在对象中设置selected属性,如下所示:

$('<option>', { value: key, selected: true })

答案 1 :(得分:1)

做得好:

var optionElement = $('<option/>').attr({
                                     "selected":"selected", 
                                     "value": key
                                   });
$('#ddlcriteria1')
  .append(optionElement)
    .text(value));

使用您的代码,您将覆盖最后一个属性

答案 2 :(得分:0)

你可以尝试这样的事情。

$.each(JSON.parse(r.d), function (key, value) {
  if (value == 'Username') {
    $('#ddlcriteria1')
      .append($('<option selected="selected" value='+ key+'>')
        .text(value));
  }
  else {
    $('#ddlcriteria1')
      .append($('<option>', { value: key })
        .text(value));
  }
});

答案 3 :(得分:0)

我不太了解您的代码,但是您会问,如果值是用户名我没有看到像用户名这样的值,因为dom中的值可能会丢失......

如果您的选择ID是ddlcriteria1,您可以选择此表单的值。

  if (value == 'Username') {
    $('#ddlcriteria1').val('Username');

  }

这就是你所需要的一切

如果你的代码很好,你可以这样做:

$.each(JSON.parse(r.d), function (key, value) {
  if (value == 'Username') {
    $('#ddlcriteria1').val('Username');
  }
  else {
    $('#ddlcriteria1')
      .append($('<option>', { value: key })
        .text(value));
  }
});

答案 4 :(得分:0)

这是您修改的代码:

$.each(JSON.parse(r.d), function (key, value) {
  if (value == 'Username') {
    $('#ddlcriteria1')
      .append($('<option>', { value: key, selected: "selected" })
        .text(value));
  }
  else {
    $('#ddlcriteria1')
      .append($('<option>', { value: key })
        .text(value));
  }
});

您应该在selected函数的第二个参数中设置数组中的append属性。

相关问题