获取所选下拉选项的数据属性

时间:2013-06-11 08:36:21

标签: javascript jquery forms

我正在尝试将选择框选项上的自定义数据属性发布到隐藏的表单字段。

这是我的html:

<select id="sampleorder" multiple="multiple">
 <option value='xxx' data-amount='5'>Name</OPTION>
 <option value='xxx' data-amount='15'>Name</OPTION>
 <option value='xxx' data-amount='2'>Name</OPTION>
</select>

和jQuery

$('#submit_btn').click(function() {
  var options = $('select#sampleorder');    
  var samplesSelected = options.val();

  $('input[name=order]').val(samplesSelected);
  $('input[name=quantity]').val(sampleAmount);
});  

我猜我的变量“sampleAmount”应该看起来像这个

  var sampleAmount = options.val().data("amount");

但它没有给我预期的结果。 获取每个项目的数据属性值的好方法是什么?

谢谢!

6 个答案:

答案 0 :(得分:12)

为什么要使用jQuery?只需使用event.target.options[event.target.selectedIndex].dataset.amount

即可

答案 1 :(得分:2)

试试这个:

$('#submit_btn').click(function() {
  var samplesSelected = $('#sampleorder').val(),
      sampleAmount = $('#sampleorder option:selected').data("amount");
  $('input[name=order]').val(samplesSelected);
  $('input[name=quantity]').val(sampleAmount);
});

答案 2 :(得分:1)

试试这个,

<强> HTML

为您的select drop down添加ID属性 喜欢

<select id="sampleorder" >
   ....

<强> SCRIPT

 var sampleAmount = $('select#sampleorder option:selected').data("amount");

小提琴 http://fiddle.jshell.net/3gCKH/

答案 3 :(得分:0)

我忘了提到它必须是一个多选框,对不起。 在您的帮助和简要介绍jQuery文档后,我设法解决了这个问题:

$("select#sampleorderm").change(function () {
    var samplesSelected = options.val().join("::");
    var samplesAmount = "";
        $("select#sampleorderm option:selected").each(function () {
            samplesAmount += $(this).data("amount") + " ";
        });

    $('input[name=sampleorder]').val(samplesSelected);
    $('input[name=sampleorderquantity]').val(samplesAmount);
 });

答案 4 :(得分:0)

另一个香草JS答案:

var selectContainer = document.getElementById('sampleorder')
var selectedOption  = selectContainer.selectedOptions.item()
var amount          = selectedOption.getAttribute('data-amount')

答案 5 :(得分:0)

在纯香草javascript中,您可以使用:

var sampleAmount = this.selectedOptions [0] .getAttribute('data-amount'));

示例:

function SelectChange(event) {
    console.log(event.selectedOptions[0].getAttribute('data-amount')); 
}
<select onchange="SelectChange(this)">
    <option data-amount="1">one</option>
    <option data-amount="2">two</option>
    <option data-amount="3">three</option>
</select>

相关问题