如何通过 jquery 或 javascript 将多个 select 下拉值插入到 var 中?
How to insert multi select dropdown value into a var by jquery or javascript?
我想通过 jquery 或 javascript 将多个 select 下拉值插入到变量中。
例如:
<select class="form-control ltr input-md input-group-addon" id="tld" name="tld" multiple="multiple">
<option value="com" selected="">.com</option>
<option value="ir">.ir</option>
<option value="net">.net</option>
<option value="org">.org</option>
<option value="co">.co</option>
<option value="xyz">.xyz</option>
<option value="biz">.biz</option>
<option value="info">.info</option>
<option value="asia">.asia</option>
<option value="club">.club</option>
<option value="us">.us</option>
<option value="mobi">.mobi</option>
<option value="name">.name</option>
</select>
<script>
//var tlds = ['info', 'com', 'net', 'org', 'co', 'biz'];
var tlds = [multi select value goes here like above comment!];
tlds.forEach(function(tld) {
//some work
});
</script>
有什么帮助吗?
谢谢
jQuery
val()
函数 returns 在多选下拉菜单上执行时的数组。
var tlds = $("#tld").val();
console.log(tlds);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select class="form-control ltr input-md input-group-addon" id="tld" name="tld" multiple="multiple">
<option value="com" selected="">.com</option>
<option value="ir" selected="">.ir</option>
<option value="net" selected="">.net</option>
<option value="org">.org</option>
<option value="co">.co</option>
<option value="xyz">.xyz</option>
<option value="biz">.biz</option>
<option value="info">.info</option>
<option value="asia">.asia</option>
<option value="club">.club</option>
<option value="us">.us</option>
<option value="mobi">.mobi</option>
<option value="name">.name</option>
</select>
尝试使用 map().get()
方法从元素创建数组。每次更改选择时,创建的数组都取决于所选值。
$('select').change(function(){
var res = $(this).children('option:selected').map(function(){
return $(this).val()
}).get()
console.log(res)
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select class="form-control ltr input-md input-group-addon" id="tld" name="tld" multiple="multiple">
<option value="com" selected="">.com</option>
<option value="ir">.ir</option>
<option value="net">.net</option>
<option value="org">.org</option>
<option value="co">.co</option>
<option value="xyz">.xyz</option>
<option value="biz">.biz</option>
<option value="info">.info</option>
<option value="asia">.asia</option>
<option value="club">.club</option>
<option value="us">.us</option>
<option value="mobi">.mobi</option>
<option value="name">.name</option>
</select>
迭代选项并将值推送到数组中。
var tlds = [];
$("#tld > option:selected").each(function(){
tlds.push(this.value);
});
console.log(tlds);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select class="form-control ltr input-md input-group-addon" id="tld" name="tld" multiple="multiple">
<option value="com" selected="">.com</option>
<option value="ir" selected="">.ir</option>
<option value="net" selected="">.net</option>
<option value="org">.org</option>
<option value="co">.co</option>
<option value="xyz">.xyz</option>
<option value="biz">.biz</option>
<option value="info">.info</option>
<option value="asia">.asia</option>
<option value="club">.club</option>
<option value="us">.us</option>
<option value="mobi">.mobi</option>
<option value="name">.name</option>
</select>
您可以将此用于 javascript 从 elementId 中获取值:
var e = document.getElementById("tld");
var value = e.options[e.selectedIndex].value;
var text = e.options[e.selectedIndex].text;
然后进行循环,遍历所有选项并将其全部添加到数组中。
每次选择或取消选择选项时调用 onChange
函数,并将所选值推送到 tlds
数组。
//var tlds = ['info', 'com', 'net', 'org', 'co', 'biz'];
var tlds = [];
function selectTld() {
tlds = [];
var vals = $('#tld').val();
tlds.push(vals);
$("#selectedValues").html(tlds);
}
tlds.forEach(function(tld) {
//some work
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select class="form-control ltr input-md input-group-addon" id="tld" name="tld" multiple="multiple" onChange="selectTld()">
<option value="com" selected="">.com</option>
<option value="ir">.ir</option>
<option value="net">.net</option>
<option value="org">.org</option>
<option value="co">.co</option>
<option value="xyz">.xyz</option>
<option value="biz">.biz</option>
<option value="info">.info</option>
<option value="asia">.asia</option>
<option value="club">.club</option>
<option value="us">.us</option>
<option value="mobi">.mobi</option>
<option value="name">.name</option>
</select>
<div id="selectedValues"></div>
希望对您有所帮助:
var tlds = (function(select) {
var res = [];
select.addEventListener('change', function(event) {
var values = Array
.prototype
.map
.call(event.target.selectedOptions, function(a) {
return a.value;
})
;
var old = res.slice();
res.length = 0;
res.push.apply(res, values);
res.onValuesChange && res.onValuesChange(event, old, res);
});
return res;
})(document.getElementById('tld'));
tlds.onValuesChange = function(event, oldValues, newValues) {
console.log({oldValues, newValues});
}
<select id="tld" multiple>
<option value="com" selected="">.com</option>
<option value="ir">.ir</option>
<option value="net">.net</option>
<option value="org">.org</option>
<option value="co">.co</option>
<option value="xyz">.xyz</option>
<option value="biz">.biz</option>
<option value="info">.info</option>
<option value="asia">.asia</option>
<option value="club">.club</option>
<option value="us">.us</option>
<option value="mobi">.mobi</option>
<option value="name">.name</option>
</select>
我想通过 jquery 或 javascript 将多个 select 下拉值插入到变量中。 例如:
<select class="form-control ltr input-md input-group-addon" id="tld" name="tld" multiple="multiple">
<option value="com" selected="">.com</option>
<option value="ir">.ir</option>
<option value="net">.net</option>
<option value="org">.org</option>
<option value="co">.co</option>
<option value="xyz">.xyz</option>
<option value="biz">.biz</option>
<option value="info">.info</option>
<option value="asia">.asia</option>
<option value="club">.club</option>
<option value="us">.us</option>
<option value="mobi">.mobi</option>
<option value="name">.name</option>
</select>
<script>
//var tlds = ['info', 'com', 'net', 'org', 'co', 'biz'];
var tlds = [multi select value goes here like above comment!];
tlds.forEach(function(tld) {
//some work
});
</script>
有什么帮助吗? 谢谢
jQuery
val()
函数 returns 在多选下拉菜单上执行时的数组。
var tlds = $("#tld").val();
console.log(tlds);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select class="form-control ltr input-md input-group-addon" id="tld" name="tld" multiple="multiple">
<option value="com" selected="">.com</option>
<option value="ir" selected="">.ir</option>
<option value="net" selected="">.net</option>
<option value="org">.org</option>
<option value="co">.co</option>
<option value="xyz">.xyz</option>
<option value="biz">.biz</option>
<option value="info">.info</option>
<option value="asia">.asia</option>
<option value="club">.club</option>
<option value="us">.us</option>
<option value="mobi">.mobi</option>
<option value="name">.name</option>
</select>
尝试使用 map().get()
方法从元素创建数组。每次更改选择时,创建的数组都取决于所选值。
$('select').change(function(){
var res = $(this).children('option:selected').map(function(){
return $(this).val()
}).get()
console.log(res)
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select class="form-control ltr input-md input-group-addon" id="tld" name="tld" multiple="multiple">
<option value="com" selected="">.com</option>
<option value="ir">.ir</option>
<option value="net">.net</option>
<option value="org">.org</option>
<option value="co">.co</option>
<option value="xyz">.xyz</option>
<option value="biz">.biz</option>
<option value="info">.info</option>
<option value="asia">.asia</option>
<option value="club">.club</option>
<option value="us">.us</option>
<option value="mobi">.mobi</option>
<option value="name">.name</option>
</select>
迭代选项并将值推送到数组中。
var tlds = [];
$("#tld > option:selected").each(function(){
tlds.push(this.value);
});
console.log(tlds);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select class="form-control ltr input-md input-group-addon" id="tld" name="tld" multiple="multiple">
<option value="com" selected="">.com</option>
<option value="ir" selected="">.ir</option>
<option value="net" selected="">.net</option>
<option value="org">.org</option>
<option value="co">.co</option>
<option value="xyz">.xyz</option>
<option value="biz">.biz</option>
<option value="info">.info</option>
<option value="asia">.asia</option>
<option value="club">.club</option>
<option value="us">.us</option>
<option value="mobi">.mobi</option>
<option value="name">.name</option>
</select>
您可以将此用于 javascript 从 elementId 中获取值:
var e = document.getElementById("tld");
var value = e.options[e.selectedIndex].value;
var text = e.options[e.selectedIndex].text;
然后进行循环,遍历所有选项并将其全部添加到数组中。
每次选择或取消选择选项时调用 onChange
函数,并将所选值推送到 tlds
数组。
//var tlds = ['info', 'com', 'net', 'org', 'co', 'biz'];
var tlds = [];
function selectTld() {
tlds = [];
var vals = $('#tld').val();
tlds.push(vals);
$("#selectedValues").html(tlds);
}
tlds.forEach(function(tld) {
//some work
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select class="form-control ltr input-md input-group-addon" id="tld" name="tld" multiple="multiple" onChange="selectTld()">
<option value="com" selected="">.com</option>
<option value="ir">.ir</option>
<option value="net">.net</option>
<option value="org">.org</option>
<option value="co">.co</option>
<option value="xyz">.xyz</option>
<option value="biz">.biz</option>
<option value="info">.info</option>
<option value="asia">.asia</option>
<option value="club">.club</option>
<option value="us">.us</option>
<option value="mobi">.mobi</option>
<option value="name">.name</option>
</select>
<div id="selectedValues"></div>
希望对您有所帮助:
var tlds = (function(select) {
var res = [];
select.addEventListener('change', function(event) {
var values = Array
.prototype
.map
.call(event.target.selectedOptions, function(a) {
return a.value;
})
;
var old = res.slice();
res.length = 0;
res.push.apply(res, values);
res.onValuesChange && res.onValuesChange(event, old, res);
});
return res;
})(document.getElementById('tld'));
tlds.onValuesChange = function(event, oldValues, newValues) {
console.log({oldValues, newValues});
}
<select id="tld" multiple>
<option value="com" selected="">.com</option>
<option value="ir">.ir</option>
<option value="net">.net</option>
<option value="org">.org</option>
<option value="co">.co</option>
<option value="xyz">.xyz</option>
<option value="biz">.biz</option>
<option value="info">.info</option>
<option value="asia">.asia</option>
<option value="club">.club</option>
<option value="us">.us</option>
<option value="mobi">.mobi</option>
<option value="name">.name</option>
</select>