0

我对 jQuery 很陌生,需要根据用户在 2 个文本框中放置的内容来创建计算。

我的表格如下所示:

<tr>
      <td with='110'>&pound; $ProductCostEach</td>
      <td with='110'>Per tile</td>
      <td width='55'>
            <input type='hidden' name='pid' id='pid' value='$ProductID' />
            <input name='quantity' class='quantity' type='text' size='1' maxlength='4' value='1' style='width:40px;' />
      </td>
      <td width='110'>
            <button type='submit' class='red'><span class='buy'>Add to basket</span></button>
      </td>
</tr><tr>
 <td with='110'>&pound; $ProductCostPerMeter</td>
 <td with='110'>Per Meter $TileSize</td>
 <td width='55'>
            <input type='hidden' name='pid' id='pid' value='$ProductID' />
            <input name='msq' class='msq' type='text' size='1' maxlength='4' value='1' style='width:40px;' />
      </td>
      <td width='110'>
            <button type='submit' class='red'><span class='buy'>Add to basket</span></button>
      </td>
</tr>

现在,当用户在输入框中输入一个带有 .msq 类的值时,我希望它进行计算,因此编写了一个 keyup 事件:

function roundNumber(num, dec) {
      var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);
      return result;
}

var convMultiplier
convMultiplier =  0.0625

$('.msq').bind('keyup', function(){
      var qty_text_box = $(this).parent().parent().parent().find('.quantity');

      qty_text_box.value(roundNumber($(this).value * convMultiplier, 2));
});

但是在获取输入框的值时遇到问题。如果我在 var qty_text_box = $(this).parent().parent().parent().find('.quantity') 之后添加一个 alert(qty_text_box.value()); 我收到一个错误“未捕获的类型错误:对象 [对象对象] 没有方法‘值’”

但我正在努力找出问题所在......

提前谢谢了,

大年

4

1 回答 1

0

您的 parent() jquery 调用字符串似乎没有找到正确的元素。如果您在同一页面上没有多个数量输入,您应该只给它一个 id 并以这种方式引用它。

如果您在页面上有多个数量输入,您应该将被单击的按钮和父元素中的输入分组,可能在同一行上,以使事情更容易,然后通过类似 $(this).parents( '.parentEl').find('.quantity')

或者,您可能会选择使用 $(this).closest('.quantity') 来获取输入,但如果没有看到更多的 html,我无法告诉您这是否可以可靠地工作。

编辑您对 .value 的第二次使用也需要括号( .value() )

于 2012-05-03T18:12:34.613 回答