2010-07-13 2 views
0

HTML:

<input type="text" id="priceperperson1" name="priceperperson1" /> 
<input type="text" name="personsvalue1" class="countme" readonly="readonly" /> 

JS:

jQuery(document).ready(function($) { 
$('div.pricerow input.countme').each(function(){ 
var id = this.name.substr(this.name.length-1); 
alert($('input#priceperperson'+id)); 
this.value = parseInt($('priceperperson'+id).value) * parseInt($('countpersons'+id).value); 
}); 
}); 

укороченный, как это возможно. Все, что у меня есть, - «Объект» ... Значение - NaN. Я попытался «parseInt» на id. Я пробовал:

$('[name=priceperperson'+id+']'); 
$('priceperperson'+id); 

Что я делаю неправильно?

+0

Что вы получите, если добавить строку: Alert ('вход # priceperperson' + ID); ? Вы уверены, что строка формируется так, как вы хотите? – riwalk

+0

Ваш код может содержать ошибки! id = lenght 1 OK if id lenght> 1 ?? возможное исключение –

ответ

5

Вы запрашиваете объекты JQuery, когда вы делаете $(..)

Чтобы получить значение (строка) используйте метод .val().

так

alert($('input#priceperperson'+id).val()); 
2

Вероятно, вы должны положить $ в определение функции.

Я предполагаю, что это заставляет переменную $ переопределяться в функции - и не указывать на функцию $() jQuery.


Я думаю об этом один:

jQuery(document).ready(function($) { 

Попробуйте использовать вместо:

jQuery(document).ready(function() { 
0

Все, что я имею в боевой готовности находится "объект" ... Значение NaN. Я пытался "ParseInt"

Попробуйте дать основание для parseInt:

parseInt(variable, 10); 
0

Есть некоторые ошибки ... чтобы получить значение объекта JQuery вы должны использовать .val() метод, а не .value.

Затем parseInt() требует, в качестве второго параметра, основания. Что-то вроде:

... 
this.value = parseInt($('priceperperson'+id).val(), 10) * parseInt($('countpersons'+id).val(), 10); 
... 
1

Когда вы перекручивание через объекты Jquery, я считаю, вы должны использовать:

$ (это) .attr ('имя'); вместо this.name

также, чтобы вызывать значения из объектов, вы должны использовать $ .val() или $ .attr ('attributename');

// Shortcut for doc ready 
$(function() 
{ 
// Loop through values 
var id = $(this).attr('name'); 

alert($('input#priceperperson' + id).val()); 
}); 
1

Возможно, вы ищете .val()?

this.val(parseInt($('priceperperson'+id).val())); 
0

код может содержать ошибки

код ID = длина 1 OK если идентификатор длина> 1 ?? Возможное исключение

priceperperson1 в priceperperson_1

# option # proposal 

<input type="text" id="priceperperson_1" name="priceperperson_1" /> // => use "_" 
<input type="text" name="personsvalue_1" class="countme" readonly="readonly" /> 


jQuery(document).ready(function($) { 
    $('div.pricerow input.countme').each(function(){ 
     var id = this.name.split("_")[1]; // => get array value 
     this.value = parseInt($('[name=priceperperson_'+id+']').value()) *parseInt($('[name=countpersons='+id+']').value()); 
    }); 
}); 
+0

Невозможное - всего 4 элемента. – Misiur

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