为选项select设置多个值,并使用jQuery获取这些值
Setting multiple values for option select and get them with jQuery
我试图将两个值分配给一个选择选项,并根据后续单选按钮的结果选择其中一个。
例如,在这个例子中,我使用了两种不同的衬衫,根据你选择的衬衫的尺寸有两个不同的价格我知道这段代码不起作用,可能是因为"value1"answers"value2",但我把它放在这里只是为了说明我试图实现的目标
http://jsfiddle.net/Shibi/o2hftb6e/3/
任何帮助都会很棒。谢谢
HTML
<select id="shirts">
<option>Choose shirt</option>
<option value1="15" value1="20">Shirt 1</option>
<option value1="20" value1="25">Shirt 2</option>
</select>
<div>
<input type="radio" name="1" value="small" />Small
<input type="radio" name="1" value="medium" />Medium</div>
<div id="priceSummary"></div>
JS-
$('#shirts').on('change', function () {
var selectedShirtText = $("#shirts :selected").text();
var selectedShirtValue = $("#shirts :selected").val();
$("#priceSummary").text(selectedShirtText ? ("Price of: " + selectedShirtText + " " + "$" + selectedShirtValue) : "");
});
以下是我解决您问题的建议:
- 在
<select>
和单选按钮上收听.change()
事件,因为您永远不知道用户将首先选择哪一个 - 使用HTML5
data-
属性来存储不同大小的价格,而不是使用value1
和value2
- 触发
.change()
事件时,探查所选衬衫的种类,并根据单选按钮的值指定的data-
属性获取正确的尺码价格 - 声明一个默认大小,这样您的价格就不会被定义
所以你的HTML应该是:
<select id="shirts">
<option value="">Choose shirt</option>
<option value="Shirt 1" data-small="15" data-medium="20">Shirt 1</option>
<option value="Shirt 2" data-small="20" data-medium="25">Shirt 2</option>
</select>
<div>
<input type="radio" name="shirtSize" value="small" checked />Small
<input type="radio" name="shirtSize" value="medium" />Medium
</div>
<div id="priceSummary"></div>
以下是有效的演示:http://jsfiddle.net/teddyrised/o2hftb6e/8/
$('#shirts, input[name="shirtSize"]').on('change', function () {
var selectedShirtText = $("#shirts :selected").val();
var selectedShirtValue = $("#shirts :selected").attr("data-" + $('input[name="shirtSize"]:checked').val());
$("#priceSummary").text(selectedShirtText ? ("Price of: " + selectedShirtText + " " + "$" + selectedShirtValue) : "");
});
刚刚做了一些调整
$('#shirts').on('change', function () {
var selectedShirtText = $("#shirts :selected").text();
var selectedShirtValue = $("#shirts :selected").val();
var size = $("input[type='radio']:checked").val();
var selectedShirtPrize = $("#shirts :selected").data("price" + size);
$("#priceSummary").text(selectedShirtText ? ("Price of: " + selectedShirtText + " " + "$" + selectedShirtPrize) : "");
});
用于HTML调整,如
<option data-price1="15" data-price2="20" value="1">Shirt 1</option>
这只是一个可以最终确定的示例-当前选择小/中,而不是Shirt1或Shirt2,价格将从所选选项的匹配data-price1或data-price2属性中检索。您说得对,将value1和value2属性分配给选项是行不通的,因为这不是有效的HTML。仅使用data-
属性就可以解决此问题。
更新的Fiddle:Fiddle
如果未选择衬衫,则不会显示文本/价格。赋值=";0";默认选项:
<option value="0">Choose shirt</option>
并且仅在if(selectedShirtValue !== 0)
我刚刚添加了一个新的属性名称value1,它可以作为另一个值,具体取决于衬衫的大小。
<select id="shirts">
<option>Choose shirt</option>
<option value1="15" value="20">Shirt 1</option>
<option value1="20" value="25">Shirt 2</option>
</select>
<div>
<input type="radio" name="1" value="small" />Small
<input type="radio" name="1" value="medium" />Medium
</div>
JS-
$('#shirts').on('change', function () {
var size=$("input[name=1]").val();
var selectedShirtText = $("#shirts :selected").text();
if (size=='large')
var selectedShirtValue = $("#shirts :selected").val();
else
var selectedShirtValue = $("#shirts :selected").attr('value1');
$("#priceSummary").text(selectedShirtText ? ("Price of: " + selectedShirtText + " " + "$" + selectedShirtValue) : "");});
您可以在这里运行此代码
相关文章:
- 使用jQuery获取Dropzone实例/对象
- 如何使用javascript/jquery获取iframe的URL的锚点属性
- 使用Javascript/JQuery获取JSON GET数据
- jQuery获取父元素并将其隐藏
- JavaScript/jQuery-获取当前元素的跨度值
- 使用 jquery 获取外部父 UL
- 当两个单独的单词被放在目标上时,使用Jquery获取一个值
- 如何使用jquery获取Json的节点
- 使用 jQuery 获取样式属性值
- JQuery获取隐藏字段的值
- 使用jQuery获取Facebook视频ID
- 使用jQuery获取第N个元素的数据属性值
- Jquery获取请求Uri太长
- jQuery:获取点击的按钮值
- 如何通过javascript或jquery获取下一行列
- 根据列表元素的值使用JQuery获取列表元素
- 使用jQuery获取选择列表中每个更改的值
- 使用jQuery获取用户坐标
- jquery获取多个选择框的值作为数组
- 如何使用JavaScript/JQuery获取下拉列表的选定值