更改HTML Select元素的选定选项 [英] Changing the selected option of an HTML Select element

查看:126
本文介绍了更改HTML Select元素的选定选项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的HTML中,我有一个带有三个< option> 元素的< select> 。我想使用jQuery来检查每个选项的值对应的Javascript var 。如果一个匹配,我想设置该选项的选定属性。我将如何做到这一点?

使用plain旧JavaScript:



var val =Fish; var sel = document。 getElementById('sel'); document.getElementById('btn')。onclick = function(){var opts = sel.options; for(var opt,j = 0; opt = opts [j]; j ++){if(opt.value == val){sel.selectedIndex = j;打破; }}}

< select id =sel> ; <选项>目录< /选项> <选项>狗和LT; /选项> < / option> Fish< / option>< / select>< button id =btn> Select Fish< / button>



jQuery



但是,如果您真的想使用jQuery:

  var val ='Fish'; $('#btn')。on('click',function(){
$('#sel')。val(val);
});

 <$ c'c> var val ='Fish'; $('#btn')。on('click',function(){$('#sel')。val(val);}); < script src =https://ajax.googleapis.com/ajax

$ b

jQuery - 使用值属性



如果您的选项具有与其文本内容不同的值属性并且您希望通过文本内容进行选择:

 < select id =sel> 
< option value =1> Cat< / option>
< option value =2>狗< /选项>
< option value =3> Fish< / option>
< / select>
< script>
var val ='鱼';
$('#sel option:contains('+ val +')')。prop({selected:true});
< / script>



Demo



但是,如果您确实已经设置了上述设置并希望使用jQuery按值进行选择,您可以像以前一样进行操作:

  var val = 3; 
$('#sel')。val(val);



现代DOM



对于浏览器支持 document.querySelector HTMLOptionElement :: selected 属性,这是完成此任务的更简洁的方式:

  var val = 3; 
document.querySelector('#sel [value =''+ val +']')。selected = true;



演示



Knockout.js

a>

 < select data-bind =value:val> 
< option value =1> Cat< / option>
< option value =2>狗< /选项>
< option value =3> Fish< / option>
< / select>
< script>
var viewModel = {
val:ko.observable()
};
ko.applyBindings(viewModel);
viewModel.val(3);
< / script>



Demo



聚合物

a>

 < template id =templateis =dom-bind> 
< select value ={{val}}>
< option value =1> Cat< / option>
< option value =2>狗< /选项>
< option value =3> Fish< / option>
< / select>
< / template>
< script>
template.val = 3;
< / script>



演示



Angular 2



注意:最终的稳定版本尚未更新。

 < app id =app> 
< select [value] =val>
< option value =1> Cat< / option>
< option value =2>狗< /选项>
< option value =3> Fish< / option>
< / select>
< / app>
< script>
var App = ng.Component({selector:'app'})
.View({template:app.innerHTML})
.Class({constructor:function(){}} );

ng.bootstrap(App).then(function(app){
app._hostComponent.instance.val = 3;
});
< / script>



演示



Vue 2



 < div id =app> 
< select v-model =val>
< option value =1> Cat< / option>
< option value =2>狗< /选项>
< option value =3> Fish< / option>
< / select>
< / div>
< script>
var app = new Vue({
el:'#app',
data:{
val:null,
},
mounted:function (){
this.val = 3;
}
});
< / script>



演示


In my HTML, I have a <select> with three <option> elements. I want to use jQuery to check each option's value against a Javascript var. If one matches, I want to set the selected attribute of that option. How would I do that?

解决方案

Vanilla JavaScript

Using plain old JavaScript:

var val = "Fish";
var sel = document.getElementById('sel');
document.getElementById('btn').onclick = function() {
  var opts = sel.options;
  for (var opt, j = 0; opt = opts[j]; j++) {
    if (opt.value == val) {
      sel.selectedIndex = j;
      break;
    }
  }
}

<select id="sel">
    <option>Cat</option>
    <option>Dog</option>
    <option>Fish</option>
</select>
<button id="btn">Select Fish</button>

jQuery

But if you really want to use jQuery:

var val = 'Fish';
$('#btn').on('click', function() {
  $('#sel').val(val);
});

var val = 'Fish';
$('#btn').on('click', function() {
  $('#sel').val(val);
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select id="sel">
    <option>Cat</option>
    <option>Dog</option>
    <option>Fish</option>
</select>
<button id="btn">Select Fish</button>

jQuery - Using Value Attributes

In case your options have value attributes which differ from their text content and you want to select via text content:

<select id="sel">
    <option value="1">Cat</option>
    <option value="2">Dog</option>
    <option value="3">Fish</option>
</select>
<script>
    var val = 'Fish';
    $('#sel option:contains(' + val + ')').prop({selected: true});
</script>

Demo

But if you do have the above set up and want to select by value using jQuery, you can do as before:

var val = 3;
$('#sel').val(val);

Modern DOM

For the browsers that support document.querySelector and the HTMLOptionElement::selected property, this is a more succinct way of accomplishing this task:

var val = 3;    
document.querySelector('#sel [value="' + val + '"]').selected = true;

Demo

Knockout.js

<select data-bind="value: val">
    <option value="1">Cat</option>
    <option value="2">Dog</option>
    <option value="3">Fish</option>
</select>
<script>
    var viewModel = {
        val: ko.observable()
    };
    ko.applyBindings(viewModel);
    viewModel.val(3);
</script>

Demo

Polymer

<template id="template" is="dom-bind">
    <select value="{{ val }}">
        <option value="1">Cat</option>
        <option value="2">Dog</option>
        <option value="3">Fish</option>
    </select>
</template>
<script>
    template.val = 3;
</script>

Demo

Angular 2

Note: this has not been updated for the final stable release.

<app id="app">
    <select [value]="val">
        <option value="1">Cat</option>
        <option value="2">Dog</option>
        <option value="3">Fish</option>
    </select>
</app>
<script>
    var App = ng.Component({selector: 'app'})
        .View({template: app.innerHTML})
        .Class({constructor:  function() {}});

    ng.bootstrap(App).then(function(app) {
        app._hostComponent.instance.val = 3;
    });
</script>

Demo

Vue 2

<div id="app">
    <select v-model="val">
        <option value="1">Cat</option>
        <option value="2">Dog</option>
        <option value="3">Fish</option>
    </select>
</div>
<script>
    var app = new Vue({
        el: '#app',
        data: {
                val: null,
        },
        mounted: function() {
                this.val = 3;
        }
    });
</script>

Demo

这篇关于更改HTML Select元素的选定选项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆