我正在尝试将选择框选项上的自定义数据属性发布到隐藏的表单字段。
这是我的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");
但它没有给我预期的结果。 获取每个项目的数据属性值的好方法是什么?
谢谢!
答案 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");
答案 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>