Простой калькулятор - как сделать выборку?
Здравствуйте!
Есть такой код: JS: function calc() { var v = $('#wrap56 .spinner input').val(); var pv = $('#wrap56 #pv56').val(); $('#day-price56').html(pv); $('#price56').html(parseInt(pv*v)); } var spinner = $('.spinner').tb3spinner({'value':12,min:12,max:60, attrs:{'name':'days56'},changed:function(){calc()} }); HTML: <div id="wrap56"> <input name="pv" id="pv56" type="hidden" value="100" /> <div class="spinner> <input type="text" name="days56" value="12"> </div> <div id="price56">1200</div> рублей <div id="day-price56">100</div> руб. в сутки </div> Так все работает. Но что делать, если вывожу на странице неизвестное количество wrap[id], pv[id], day-price[id], price[id] - (wrap55,wrap56,wrap57, ...)? Пытался что-то сделать через div[id^=wrap] и this - ничего не получается. Помогите пожалуйста - как правильно сделать выборку? Заранее огромное спасибо! Используется tb3spinner.js, но думаю, разницы нет. |
Цитата:
|
nohc,
function calc() { var parent = $(this).parents('[id^=wrap]') var v = +this.value; var pv = +$('[id^=pv]',parent).val(); $('[id^=day]',parent).html(pv); $('[id^=price]',parent).html(pv*v); } может у вас неполучалось из-за опечатки в 3 строке? |
https://bitbucket.org/kolerii/jquery.tb3spinner.js/
Он только для превращения инпута в спиннер используется |
Цитата:
Так тоже не получается - пропадает инпут (он динамически создается tb3spinner'ом) |
Делаю вот так:
function calc() { var parent = $(this).parents('div[id^=wrap]'); var v = +this.value; //var pv = +$('[id^=pv'],parent).val(); //$('[id^=day]',parent).html(pv); //$('[id^=price]',parent).html(pv*v); alert(v); } Выскакивает сообщение: NaN |
nohc,
видеть надо работу вашего плагина а не гадать |
Сейчас по быстрому залил на хостинг, можно посмотреть здесь:
http://zen-book.ru/ |
Полнейший пипец. Искать через три-девять земель два инпута чтобы перемножить их валуи.
Цитата:
Другими словами скрипт знает что первый чайлд <div id="wrap56"> это "в день", а второй чайлд это "в час" или как там у вас, не важно. Это если вы найдете все <div id="wrapХХХХХХХ">. А если не найдете то и не надо. Потому что по имени, которое может быть одинаковым для 100500 инпутов, вы найдете все 100500, каждый из которых найдет свою пару среди 100500 тех инпутов, с валуями которых ему хочется умножиться. В процессе повешания функции calc() на инпуты профтыкаете счетчик как index во все найденные по имени элементы множимого. И тогда любой множимый найдет множителя: var my_pair = document.getElementsByName('known_name')[this.index]; Ну и самое очевидно: загрузите с сервера готовый массив этих id и не парьтесь поисками пары. |
На сервере одинаковые имена превратятся в "индексный" массив если там php.
Не проверял и не собираюсь, но среди мощностей jquery по идее должна быть и такая, которая умеет собирать в объекты ссылки на элементы по именам в формате name="some[97]"; Потому что сплошняком индексный не всегда удобен, хотя никакой разницы нет - чуть-чуть немного больше исходящего трафика пойдет, поскольку придется отгружать все, а не только нужное. |
Часовой пояс GMT +3, время: 19:30. |