尝试使用下拉菜单和数量创建各种计算器。如何将下拉值与文本字段相乘,并使用Javascript将结果显示在另一个文本字段中?这将适用于表中的每一行。
HTML:
<table width="594" border="1">
<tr>
<th colspan="2" scope="col"><strong>Line Breakdown</strong></th>
<th colspan="2" scope="col"><strong>Qty</strong></th>
<th width="90" scope="col">Unit Line Cost</th>
<th width="90" scope="col">Total Line Cost</th>
</tr>
<tr>
<td width="122"><strong>Cabinets</strong></td>
<td width="150"><select name="DDcabinets" id="DDcabinets">
<option value="">Select an option …</option>
<option value="100">Dura Supreme</option>
<option value="110">Lenape Village</option>
<option value="120">Wellborn Forest</option>
</select></td>
<td width="65"><input type="text" name="Qcabinets" id="Qcabinets" size="10" maxlength="5"/></td>
<td width="41">ft.</td>
使用Javascript:
window.onload = function () {
var select1 = document.getElementById('DDcabinets');
var input1 = document.getElementById('Vcabinets');
select1.onchange = function () {
input1.value = select1.value;
};
我添加了这个Javascript,但它不起作用 - 我猜我的Javascript数学有点偏离(那我和我对编码真的不熟悉。)
var total1 = document.getElementById('Tcabinets');
var qty1 = document.getElementsById('Qcabinets');
qty1.onchange = function () {
total1.value = select1.value * qty1.value;
};
另请参阅http://jsbin.com/dodew/2/edit以获取完整脚本。 [注意:您可能需要调整“输出”列的大小以查看整个下拉列表和文本字段表。]
答案 0 :(得分:1)
好的,所以你非常亲密,干得好!你需要注意的两件事就是这个。
// getElement(s)ById, no such thing! Change it to getElementById
var qty1 = document.getElementsById('Qcabinets');
接下来,将元素值存储为string
,您需要将它们转换为整数值,我倾向于使用parseFloat执行此操作,但parseInt也是一种选择。
只需更改你的乘法就可以将字符串转换为积分,你就没事了!
total1.value = parseFloat(select1.value) * parseFloat(qty1.value);
答案 1 :(得分:0)
使用jQuery:
$('#DDcabinets').change(function(){
$('#Vcabinets').val($('#DDcabinets').val()) ;
});
$('#Qcabinets').change(function(){
$('#Tcabinets').val( $('#Vcabinets').val()* $('#Qcabinets').val());
});
$('#DDcountertop').change(function(){
$('#Vcountertop').val($('#DDcountertop').val()) ;
});
$('#Qcountertops').change(function(){
$('#Tcountertops').val( $('#Vcountertop').val()* $('#Qcountertops').val());
});
将此代码放入document.ready
中<强> Demo 强>