簡體   English   中英

如何使用jQuery在datalist中獲取選定的屬性值

[英]how to get selected attribute value in datalist using jQuery

 $("input[name=TypeList]").focusout(function(){ alert($(this).attr('data-value')); });
 <body> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input id="s" name = "TypeList" list = "TypeList" placeholder = "Select Type"/> <datalist id = "TypeList"> <option data="1" data-value="1">Internet Explore1</option> <option data-value="4">Internet Explore4</option> <option data-value="3">Internet Explore3</option> <option data-value="2">Internet Explore2</option> </datalist> </body>

您可以使用jQuery :contains()偽類選擇器根據內容進行選擇。

 $("input[name=TypeList]").focusout(function(){ alert($(`#TypeList option:contains('${this.value}')`).data('value')); });
 <body> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input id="s" name = "TypeList" list = "TypeList" placeholder = "Select Type"/> <datalist id = "TypeList"> <option data="1" data-value="1">Internet Explore1</option> <option data-value="4">Internet Explore4</option> <option data-value="3">Internet Explore3</option> <option data-value="2">Internet Explore2</option> </datalist> </body>

對於精確匹配,您必須使用filter()方法。

 $("input[name=TypeList]").focusout(function() { var val = this.value; alert($('#TypeList option').filter(function() { return val === this.value; }).data('value')); });
 <body> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input id="s" name="TypeList" list="TypeList" placeholder="Select Type" /> <datalist id="TypeList"> <option data="1" data-value="1">Internet Explore1</option> <option data-value="4">Internet Explore4</option> <option data-value="3">Internet Explore3</option> <option data-value="2">Internet Explore2</option> </datalist> </body>

僅供參考:要獲取data-*值,請使用 jQuery data()方法。

不確定是否有比這更簡單的解決方案。 下面試試。

 $("input[name=TypeList]").focusout(function(){ console.log($([].slice.call($(this)[0].list.children).filter((e) => { return e.value === $(this).val(); })).attr('data-value')); });
 <body> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input id="s" name = "TypeList" list = "TypeList" placeholder = "Select Type"/> <datalist id = "TypeList"> <option data="1" data-value="1">Internet Explore1</option> <option data-value="4">Internet Explore4</option> <option data-value="3">Internet Explore3</option> <option data-value="2">Internet Explore2</option> </datalist> </body>

$(this).val()應該為你做這項工作.. :)

 $("input[name=TypeList]").focusout(function(){ alert($(this).val()); });
 <body> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input id="s" name = "TypeList" list = "TypeList" placeholder = "Select Type"/> <datalist id = "TypeList"> <option data="1" data-value="1">Internet Explore1</option> <option data-value="4">Internet Explore4</option> <option data-value="3">Internet Explore3</option> <option data-value="2">Internet Explore2</option> </datalist> </body>

還有另一種方法可以通過對輸入值的更改事件做出反應來做到這一點:

$(function(){
    $('#s').change(function(){
        console.log($("#TypeList option[value='" + $('#s').val() + "']").attr('id'));
    });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM