我需要在文本框中输出一个金额,无论用户在下拉菜单中选择什么。我有这些代码行,但它不会改变答案。 例如,如果用户选择A,则答案将显示在文本框中,如果他/她选择B,则将显示不同的答案。
脚本
$(function(){
$('select[name="Menu"] == A').change(function(){
var textId= $(this).data('text');
$('#'+textId).val("$186.00");
});
});
$(function(){
$('select[name="Menu"] == B').change(function(){
var textId= $(this).data('text');
$('#'+textId).val("$200.00");
});
});
HTML
<select name="Menu" data-text="inptxt1">
<option value=""></option>
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
<option value="D">D</option>
</select>
</select>
<input type="text" value="$0.00" name="inptxt1" id="inptxt1" readonly/>
答案 0 :(得分:2)
要修复您的代码,您希望收听change
元素上的SELECT
事件,而不是OPTION
。使用jQuery尤其如此,因为您可以使用.val()
在更改时获取所选值,如下所示:
$("select[name='Menu']").change(function()
{
var selectedValue = $(this).val();
// do stuff with selectedValue (in this case 'A', B', 'C', etc.)
});
您通常希望价格信息(可能随时间而变化)是动态的和数据驱动的,而不是硬编码到条件语句或标记中。
向下滚动到底部,然后点击“运行代码段”以查看此操作。它显示了多个选项如何影响成本,这听起来像你最终的后续。
// dynamic product data comes from server (for example, on initial load or via AJAX)
var products = [{
Code: 'A',
Price: 100.00,
Description: 'Large'
}, {
Code: 'B',
Price: 125.00,
Description: 'X-Large'
}, {
Code: 'C',
Price: 150.00,
Description: 'XX-Large'
}, {
Code: 'D',
Price: 1000.00,
Description: 'WTF-Large'
}];
function RefreshProductInfo() {
var qty = parseInt($("#ddlQty").val());
var productCode = $("#Menu").val();
var items = $.grep(products, function(item) {
return item.Code === productCode;
});
if (items.length === 1) {
var product = items[0];
} else {
product = {
Price: 0.0
};
}
$("#lblPrice").text(product.Price.toFixed(2));
var cost = product.Price * qty;
$("#lblCost").text(cost.toFixed(2));
}
// populate products options
$.each(products, function(idx, item) {
$("#Menu").append($("<option></option").val(item.Code).text(item.Description));
});
// populate qty options
var maxQty = 10;
var stringBuffer = [];
for (var i = 0; i < maxQty; i++) {
stringBuffer[i] = "<option>" + (i + 1) + "</option>";
}
$("#ddlQty").on("change", RefreshProductInfo).html(stringBuffer.join());
$("#Menu").on("change", RefreshProductInfo);
* {
font-family: "Segoe UI", Arial, "Sans serif";
font-size: 14px;
}
LABEL {
display: inline-block;
width: 100px;
padding: 4px;
text-align: right;
}
SPAN {
color: #333;
padding: 4px;
font-weight: bold;
display: inline-block;
width: 100px;
text-align: right;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>
<label for="Menu">Size:</label>
<select id="Menu">
<option value="">[Choose size]</option>
</select>
</p>
<p>
<label for="lblPrice">Unit price:</label>
$<span id="lblPrice">0.00</span>
</p>
<p>
<label for="ddlQty">Qty:</label>
<select id="ddlQty"></select>
</p>
<p>
<label for="lblCost">Gross cost:</label>
$<span id="lblCost">0.00</span>
</p>
答案 1 :(得分:0)
您需要检测选择而不是选项的更改。
<强>小提琴强>
http://jsfiddle.net/ghopkins/o43dnbgh/
<强>脚本强>
$(function(){
$('select[name="Menu"]').change(function(){
var textId= $(this).data('text');
var price = $( "option:selected" , this).data('price');
$('#'+textId).val(price);
});
});
<强> HTML 强>
<select name="Menu" data-text="inptxt1">
<option value=""></option>
<option value="A" data-price="$186.00">A</option>
<option value="B" data-price="$200.00">B</option>
<option value="C" data-price="$214.00">C</option>
<option value="D" data-price="$228.00">D</option>
</select>
<input type="text" value="$0.00" name="inptxt1" id="inptxt1" readonly/>
编辑放回数据属性,傻了我..
答案 2 :(得分:-1)
我不认为'select[name="Menu"] == A'
是合法的jQuery选择器。我建议创建一个只找到下拉菜单的选择器,然后检查值,您可以在一个函数中执行该操作:
$('select[name="Menu"]').change(function() {
var textId = $(this).data('text');
var textValue;
if $(this).val() == "A"
textValue = "$186.00";
else if $(this).val() == "B"
textValue = "$200.00";
end
$('#' + textId).val(textValue);
});
答案 3 :(得分:-1)
我认为没有必要在选择选项上添加数据属性。只需使用货币值的值和选项文本的html文本字段。
<select name="Menu" data-text="inptxt1">
<option value=""></option>
<option value="$186.00">A</option>
<option value="$200.00">B</option>
<option value="$214.00">C</option>
<option value="$228.00">D</option>
</select>
<input type="text" value="$0.00" name="inptxt1" id="inptxt1" readonly/>
的javascript:
$(function(){
$('select[name="Menu"]').change(function(){
var textId= $(this).data('text');
var price = $( "option:selected").val();
$('#'+textId).val(price);
});
});