我正在尝试使用.data()在表单中设置变量并且无法使其工作,因为我无法获得变量“费用”的任何输出,我只看到一个空白。 理想情况下,用户可以选择类型,输入素材,然后选择25%或50%。每个百分比都与所选类型(hp或lp)的不同数据条目相关联。然后,所选的数据类型将插入data()选择器以提取“费用”的值。我可以得到所有其他变量来显示除此之外的数量,所以我认为这一定是我出错的地方。我不确定我做错了什么,所以任何输入都将不胜感激!谢谢!
这是JSFiddle - http://jsfiddle.net/gv0029/g78bG/2/
HTML:
<select class="pSelectP" id="pPost_D">
<option value="select">Type</option>
<option data-hp="5" data-lp="2" value="Type 1">Type 1</option>
</select>
<br/>
<input id="pPost_F" class="pSelectQ" placeholder="Footage" />
<br/>
<select id="pPost_P" placeholder="Percentage">
<option value="lp">25%</option>
<option value="hp">50%</option>
</select>
<br/>
<input id="pPost_C" placeholder="Cost" />
<br/>
<input id="pPost_A" placeholder="Total" />
JS:
$(document.body).on('keypress keydown keyup change', '[class="pSelectP"] , [class="pSelectQ"]', function () {
if ($('#manualOverrideNo').prop('checked')) {
var parts = $(this).attr('id').split("_"),
service = parts[0],
footage = parseFloat($("#" + service + "_F").val(),
10),
percentage = $("#" + service + "_P").val(),
fee = parseFloat($("#" + service + "_D").data("'" +
percentage + "'"), 10),
cost = $("#" + service + "_C"),
amount = '',
finalAmount = '';
if (isNaN(footage)) {
total.val("Please enter Quantity");
}
if (!isNaN(footage) && (!isNaN(Number(fee)))) {
amount = Math.ceil(footage * fee);
total.val(amount);
cost.val(fee);
}
}
});
答案 0 :(得分:1)
你可能需要调整一些数学,但我认为这对你有用。
$(document.body).on('keypress keydown keyup change', '[class="pSelectP"] , [class="pSelectQ"]', function () {
var service = $(this).attr('id').split("_")[0],
footage = parseFloat($("#" + service + "_F").val());
pricetype = $("#" + service + "_P option:selected").val();
percentage = parseFloat($('#pPost_D option:selected').data()[pricetype]);
fee = percentage * footage;
if (isNaN(footage)) {
$("#" + service + "_A").val("Please enter Quantity");
}
if (!isNaN(footage) && (!isNaN(Number(fee)))) {
$("#" + service + "_A").val(Math.ceil(fee));
$("#" + service + "_C").val(fee);
}
});