如何使用jquery获取var中dropdownlist的所有值?

时间:2016-08-29 13:40:53

标签: javascript c# jquery asp.net

我想将字符串与dropdownlist中的所有值进行比较。 dropdownlist的哪个值与该字符串匹配,应该被选中。

例如

<div class="col-lg-3">
     <asp:DropDownList ID="DropDownListVendor" class="form-control text-box-border" runat="server" DataSourceID="SqlDataSource1" DataTextField="vendor_name" DataValueField="vendor_name"></asp:DropDownList>
     <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:Nibrass_DBConnectionString %>" SelectCommand="SELECT [vendor_name] FROM [Vendor_tb]"></asp:SqlDataSource>
</div>

DropDownListVendor返回并在下拉列表[Compaq,Hp]中显示两个值。

现在我想将一个字符串与所有的dropdownlistvendor值进行比较。 我尝试使用此代码获取dropdownlist的所有值。但它没有用。

var vendorArr = [];
$('#DropDownListVendor').each(function() {
  vendorArr.push($(this).attr('value'));
});
alert("vendor Array ==" + vendorArr[0]);  

它会在警告vendor Array == Undefined中返回。 感谢。

2 个答案:

答案 0 :(得分:2)

您必须循环options#DropDownListVendor选择器只会获取select元素本身和当前selected value,而不是所有可能的值。

$('#DropDownListVendor option').each(function() {
    vendorArr.push($(this).attr('value'));
});

工作示例:

&#13;
&#13;
var vendorArr = [];

$('#DropDownListVendor option').each(function() {
    vendorArr.push($(this).attr('value'));
});

console.log(vendorArr);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<select id="DropDownListVendor">
  <option value="Compaq">Compaq</option>
  <option value="HP">HP</option>
  <option value="Lenovo">Lenovo</option>
  <option value="IBM">IBM</option>
</select>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

您可以使用.map()

循环选择列表中的选项
var vendorArr = $("#DropDownListVendor option").map(function() {
  return this.value;
}).get();

因为,当您使用asp母版页时,如果在html中呈现asp下拉列表id可能会更改,您可以使用Attribute Ends With Selector来解决此问题:

var vendorArr = $("[id$='DropDownListVendor'] option").map(function() {
  return this.value;
}).get();