在Javascript中将下拉字段乘以文本字段

时间:2014-04-30 03:21:21

标签: javascript jquery html

尝试使用下拉菜单和数量创建各种计算器。如何将下拉值与文本字段相乘,并使用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以获取完整脚本。 [注意:您可能需要调整“输出”列的大小以查看整个下拉列表和文本字段表。]

2 个答案:

答案 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