【问题标题】:Set an option value as selected将选项值设置为选中
【发布时间】:2016-11-24 16:04:13
【问题描述】:

我想加载一个选择框,用户选择的值会自动出现在其中。

我正在从服务器接收带有用户信息的 Json 数据。 数据样本为:{"color":"red"}

在我的 html 代码中,我有这样的选择选项:

<select id="input_user" class="selectinput" disabled="true">
<option value="n/a"> n/a </option>
<option value="red"> red </option> 
<option value="green"> green </option>
<option value="yellow"> yellow </option>
<option value="blue"> blue </option>
<option value="white"> white </option>
</select> //this will only show "n/a" as default

我尝试使用此代码将红色值设为默认值,但不起作用。

var user_color= data[2].color; // this was from the json data
document.getElementById('input_user').selectedIndex = user_color;

有什么帮助吗?

【问题讨论】:

标签: jquery html


【解决方案1】:

当您使用 jQuery 标记此问题时,您可以直接在 select 上设置 val()

var user_color = 'red'; //data[2].color;
$('#input_user').val(user_color);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="input_user" class="selectinput" disabled="true">
  <option value="n/a">n/a</option>
  <option value="red">red</option>
  <option value="green">green</option>
  <option value="yellow">yellow</option>
  <option value="blue">blue</option>
  <option value="white">white</option>
</select>

【讨论】:

  • 我认为罗里的回答是正确的。您正在设置选择索引,而不是更新值。
  • 现在他可以随心所欲地投反对票 :D。这个答案是正确的,我无法想象这是第一次被正确回答。
  • 这有什么不同? document.getElementById('input_user').value = user_color ;
  • @c.k:不同之处在于,答案使用 jQuery,而您的建议是纯 JavaScript。如果你想要一个纯 JavaScript 的答案,请在此处查看:stackoverflow.com/questions/10911526/…
  • 感谢@RoryMcCrossan 的帮助!
【解决方案2】:

经过大量研究,我终于回去查看了给我正确答案的 jQuery 文档:

1 / 删除标签的所有已经具有'selected'属性的属性

function remove_selected(){
  $("select option").removeAttr('selected');
}

2 / 我使用 jQuery 的 prop() 函数将 'selected' 属性分配给所需的标签

// USE THE FUNCTION TO REMOVE ALL ATTRIBUTES ALREADY SELECTED  
remove_selected();

// Set the tag <option> attribute to 'selected'
$('select option[value="ThatYouWant"]').prop({defaultSelected: true});

在 HTML 中,这给出了:

<select>
  <option value="something">Something</option>
  <option value="ThatYouWant" selected>That you want</option>
  <option value="OtherValue">Other value</option>
</select>

干净无毛刺,感谢您的反馈和指正,如果您认为此解决方案正确,请批准。此致,Raf。

来源:https://api.jquery.com/prop/

【讨论】:

  • +1 表示此选项;与接受的答案不同,这会修改 html。在进一步复制之前修改 dom 节点时,它对我有帮助。
  • 感谢您的回复,确实,我之前观察到 DOM 上的变化,但 HTML 上没有,这看起来像是一个 hack,但是我们能做什么...
猜你喜欢
  • 2019-09-04
  • 1970-01-01
  • 1970-01-01
  • 2015-08-24
  • 1970-01-01
  • 2017-04-28
  • 1970-01-01
  • 2019-09-05
  • 1970-01-01
相关资源
最近更新 更多