我正在尝试从选择multiple="multiple"
选项dropdown
中获取所有选定项目的名称。
在我的html页面中,我有以下代码段:
<select id="ddlCategory" ng-model="myCategory.myCategoryName" multiple>
<option selected="selected" value="1">Washroom</option>
<option value="2">Restaurant</option>
</select>
在我的JS文件中,我有以下代码片段:
var categoryNameArray = $('#ddlCategory').val();
console.log("category = " + categoryNameArray[0];
但是,变量categoryNameArray
只给出了所选项目的数组,我想要的是所选项目的名称。有人可以告诉我如何使这项工作?谢谢!
答案 0 :(得分:3)
由于val
并未提供您想要的内容,因此我假设您需要所选项目的 text 数组。
你可以这样:
var selectedTextArray = $("#ddlCategory option:selected").map(function() {
return $(this).text();
}).get();
找到所有选定的项目,然后使用map
获取每个项目的文本(包装在jQuery对象中),然后使用get
将该jQuery对象转换为数组。 / p>
您可以使用return this.text;
而不是return $(this).text();
,因为HTMLOptionElement
具有text
属性(大多数元素都不会),但我可以使用$("#btn").on("click", function() {
var selectedTextArray = $("#ddlCategory option:selected").map(function() {
return $(this).text();
}).get();
console.log(selectedTextArray);
});
。请务必使用我的目标浏览器进行测试。
示例:
Select some items, then click
<input type="button" id="btn" value="here">
<br>
<select id="ddlCategory" ng-model="myCategory.myCategoryName" multiple>
<option value="1">Washroom</option>
<option value="2">Restaurant</option>
<option value="3">Service Station</option>
<option value="4">Drive-Thru</option>
</select>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
this.text
&#13;
$(this).text()
代替$("#btn").on("click", function() {
var selectedTextArray = $("#ddlCategory option:selected").map(function() {
return this.text;
}).get();
console.log(selectedTextArray);
});
的示例:
Select some items, then click
<input type="button" id="btn" value="here">
<br>
<select id="ddlCategory" ng-model="myCategory.myCategoryName" multiple>
<option value="1">Washroom</option>
<option value="2">Restaurant</option>
<option value="3">Service Station</option>
<option value="4">Drive-Thru</option>
</select>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
getProfile() {
let cached: any;
if (cached = sessionStorage.getItem(this._baseUrl)) {
return Observable.of(JSON.parse(cached));
} else {
return this.http.get(this._baseUrl).map((response: Response) => {
sessionStorage.setItem(this._baseUrl, response.text());
return response.json();
});
}
}
&#13;
答案 1 :(得分:2)
val()
中, 1, 2 ...
会返回所选选项的值。您应该使用text()
来获取所选选项的名称。您可以使用each()
方法遍历所有选定的选项,并使用text()
获取所选值:
$('a').on('click', function(e) {
e.preventDefault();
$('#ddlCategory option:selected').each(function(i, selected) {
console.log($(selected).text());
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="ddlCategory" ng-model="myCategory.myCategoryName" multiple>
<option selected="selected" value="1">Washroom</option>
<option value="2">Restaurant</option>
</select>
<a href="#">Send</a>
您可以详细了解val()
的工作原理 here 。
您可以详细了解text()
的工作原理 here 。
答案 2 :(得分:0)
试试这个:
var categoryNameArray =
$('#ddlCategory option:selected').map(function(){
return this.text;
}).get();
console.log("category = " + categoryNameArray);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="ddlCategory" ng-model="myCategory.myCategoryName" multiple>
<option selected="selected" value="1">Washroom</option>
<option selected="selected" value="2">Restaurant</option>
<option value="3">Coffee Shop</option>
<option value="4">Hotels</option>
</select>
&#13;
答案 3 :(得分:0)
获取所有选定值的简便方法是$('#ddlCategory')。val();