2012-04-05 5 views
0

Я очень новичок в jQuery и вам нужно создать расчёт, основанный на том, что пользователи размещают в 2 текстовых полях.Ошибка JQuery при вычислении: «Uncaught TypeError: Object [object Object] не имеет метода« value »«

Моя форма выглядит следующим образом:

<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)); 
}); 

Но проблема связана с получением значения поля ввода. Если я добавлю предупреждение (qty_text_box.value()) после var qty_text_box = $ (this) .parent(). Parent(). Parent(). Find ('. Quantity'); я получаю сообщение об ошибке «Uncaught TypeError: Object [объект Object] не имеет какого-либо метода„значение“»

Но я изо всех сил, чтобы выяснить, что проблема ...

Большое спасибо заранее,

Danian

ответ

0

Не похоже, что ваша строка родительских() вызовов jquery находит правильный элемент. Если у вас нет нескольких входов количества на одной странице, вы должны просто дать ей идентификатор и обратиться к нему таким образом.

Если у вас есть несколько входов количества на странице, вы должны сгруппировать нажатую кнопку и вход в родительский элемент, возможно, в той же строке, чтобы упростить задачу, а затем найти ее через что-то вроде $ (this) .parents ('. parentEl'). find ('. quantity')

В качестве альтернативы вы можете выбрать $ (this) .closest ('. quantity'), чтобы получить ввод, но не видя больше html, я не мог сказать вам, будет ли это работать надежно.

РЕДАКТИРОВАТЬ также для вашего второго использования .value необходимо parens (.value())

Смежные вопросы