9

我正在使用来自http://ivaynberg.github.io/select2/select2-latest.html的 Select2 插件,它工作正常,但我在从选项属性中获取值时遇到问题。

我有一个这样的选择菜单:

<select name="invoice_line[0][vat]" class="vat">
    <option value="20440" data-value="21.00" data-name="20440" selected="selected">21%</option>
    <option value="20441" data-value="6.00" data-name="20441">6%</option>
    <option value="20442" data-value="0.00" data-name="20442">0%</option>
</select>

如何获取所选选项的属性“数据值”、“数据名称”和“值”的值?

4

14 回答 14

13
obj = $("#dropdown").select2("data")

obj变量中,我将获得所有dataselected node.

于 2015-06-01T20:27:59.357 回答
6

这在另一个 SO 问题中得到了回答

select2 没有直接的方法,您可以使用 select2 数据和 jQuery 的组合:

$("#example").select2().find(":selected").data("id");

首先,您获得 select2 数据,然后您使用 jQuery 找到您选择的选项,最后是数据属性。

于 2014-03-26T19:32:29.693 回答
2

我们可以使用 select2 数据和 jQuery 的组合:

$("#example").select2('data').element[0].attributes['data-name'].value
于 2016-02-25T10:51:35.990 回答
1

以下为我工作。想法是使用“更改”功能如下

<select class="drop-down">
     <option value="0">A</option>
     <option value="1">B</option>
</select>

$('.drop-down').select2().on("change", function(e) {
    var obj = $(".drop-down").select2("data");
    console.log("change val=" + obj[0].id);  // 0 or 1 on change
});
于 2016-06-23T22:58:11.273 回答
1
var return_option = $("#your-select-input-id").select2().find(":selected")[0];    

上面给定的语句将返回选择选项,然后将返回结果如下所示:

var name_of_attribute = $( return_option ).attr('name-of-attribute');

这将返回属性值。

于 2020-07-09T16:48:26.037 回答
0

将 select2 置于标记模式,它会帮助你。或者试试下面类似的代码,它可能对你有用......

$("$id").select2("val", option);
$("$id").attr("data-name");
于 2013-10-03T09:47:57.810 回答
0
el = document.getElementsByName("invoice_line[0][vat]")
el.options[[el.selectedIndex]].attributes["data-id"].value
于 2014-04-25T14:10:31.287 回答
0

我希望你解决了这个问题。这里我们不使用select2(),如果我们使用select2()它将无法使用所有其他功能,例如formatNoMatches, on-change....

$("#example").find(":selected").data("id");
于 2014-09-24T08:13:05.950 回答
0

我知道这是一篇旧帖子,但我一直在努力解决同样的问题。这是我和我的好朋友 Thys 终于开始工作的解决方案:

<script type="text/javascript">

$(document).ready(function ()
{
    $("#e1").select2();

    $("#e1").change(function () {

        var theID = $("#e1").val();
        $('#staffNr').val(theID);
        $('#staffNr').val();
            //var theID = $(test).select2('data').id;
            var theSelection = $(test).select2('data').text;
            $('#selectedID').text(theID);
            $('#selectedText').text(theSelection);
    });

});

@Html.Hidden("fieldName","staffNr");

这在我的 MVC 4 视图中有效,在我的 html 表单中的最后一行正确添加到模型中。如果您使用我的答案,请不要忘记投票:) 我没有太多的声誉......

于 2014-03-05T12:24:45.357 回答
0

不知道插件,并且不检查代码是否有效,我想它会是这样的:

$('.vat li').each(function(){
     var me = $(this),
     mevalue = me.attr('value'),
     datavalue = me.data('value'),
     dataname = me.data('name');

     //do what you want with the data?
});
于 2013-10-03T09:40:05.630 回答
0

你必须使用on("change"...因为这是一个动态生成的选项列表。

$('.select_class').on("change",function(){
    var selected_value= $('.hakemler').val();
    var wanted= $('.select_class').find('option[value="'+selected_value+'"]').attr('data-foo');
    alert(selected_value+" "+wanted);
});
于 2020-06-11T12:10:56.230 回答
0

您可以访问查看 DOM 结构的属性:

<select id="select_name">
   <option value="20440" data-value="21.00">21%</option>
   <option value="20441" data-value="6.00">6%</option>
   <option value="20442" data-value="0.00">0%</option>
</select>

    $('#select_name option').each(function (index) {
        console.log($(this).attr("data-value"));
    });
于 2018-10-19T15:56:35.987 回答
0

为您的选择元素设置一个ID,这将起作用

$('select#your-id').find('option[value="'+$('#your-id').val()+'"]').attr('data-attribute');
于 2019-09-23T12:21:26.273 回答
0

所选项目的params.data.element对象包含您要查找的数据。

我正在调用的选择元素在哪里.foo,我要访问的选项中的数据属性是data-bar="some value"以下对我有用的:

var $fooSelect = $('.foo');
$fooSelect.on(function (e) {
  console.log($(e.params.data.element).data('bar'));
});
于 2015-11-07T21:51:04.457 回答