JQuery计算错误:“未捕获的类型错误:对象[对象对象]没有方法'值'”

问题描述:

我对jQuery很新,需要根据用户放置在2个文本框中的内容来创建计算。JQuery计算错误:“未捕获的类型错误:对象[对象对象]没有方法'值'”

我的形式如下:

<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())我得到一个错误“遗漏的类型错误:对象的翻译:有没有方法‘价值’”

但我在努力工作,出了什么问题?

提前许多感谢,

大连

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

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

或者,您可以选择使用$(this).closest('。quantity')来获取输入,但不会看到更多HTML我不能告诉你,如果这将可靠地工作。

编辑也是你的第二次使用。值需要parens(.value())