Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Работа и инпутами и цифрами в цикле (https://javascript.ru/forum/dom-window/58317-rabota-i-inputami-i-ciframi-v-cikle.html)

Эдди 15.09.2015 19:09

рони. и так работает:
$('div').on('input', 'input.ser_n', function() { });
И так и так правильно?

Эдди 15.09.2015 19:13

И последний вопрос новичка по моему случаю.
Цифра находится в ячейке таблицы <td>
Задавать id, чтобы работать с цифрой - это где надо задать id?
Не в ячейке же?
Правильно ли будет <span id="id" + i >?
Или обернуть цифру в div?
Напоминаю, таблица, где цифра, формируется динамически.

Эдди 15.09.2015 19:37

В общем, сам допер.
Пофигу так id <td>, <span> или <div>.
Я пытался по val() вытащить цифру, а надо было по .html()... :)

рони 15.09.2015 19:46

Цитата:

Сообщение от Эдди
а надо было по .html()

или text()

sanmihan 16.09.2015 07:15

Цитата:

Сообщение от Эдди
$('div').on('input', 'input.ser_n', function() { });
И так и так правильно?

Можно и $("table").on('input', 'input.ser_n', function() { });
тогда обработчик будет только на таблицах, а не на всех дивах

sanmihan 16.09.2015 07:19

Как я понял рони намекал на то чтобы инпут выглядел примерно так <input oninput="something(i)"> или нет?

рони 16.09.2015 07:25

sanmihan,

$('div input.ser_n').on('input',  function() { 
  alert(this.id.replace('serv_num','')); 
});

условно
было так

$('div input.ser_n').on('input', function() {
alert(нужная цифра);
});

Эдди 16.09.2015 09:09

Да. рони имел в виду 'change paste keyup' == 'input'.
Я заменил, и все ок.
А по первоначальному запросу использовал, как
sanmihan
ответил - replace. Тоже все работает.

ТОЛЬКО, С**КА, дублируются записи, потому умножение просхдодит три раза в таблицу.
Как там испольвать complete: не знаю. Рою интернет. Ничего путного не нашел.

Вообще странно. Таблица выводится один раз, а когда умножаю инпут на текст той же строки, умножается три раза.

Эдди 16.09.2015 20:09

БЛН. Опять затык. Надеюсь, последний.

Напомню. В динамической таблице с перечислением услуг всем услугам присвоен класс ser_n. Каждая услуга имеет id="serv_num" + i (выводятся в цикле).
Задача при вводе в инпут умножить число на стоимость услуги на 1 человека.
Все умножается. Но поскольку услуги в данном случае 3, то умножается 3 раза.
Как бы исправить функцию, чтобы умножение было только один раз.
Конечно, можно сделать цикл с одной итерацией или прерыванием после первой итерации.
Но криво будет, уверен.
$('div').on('input', 'input.ser_n', function() {
  var $s = $(this).val(); //вводимое число
  var $x = $(this).attr('id').replace('serv_num',''); //порядковый номер услуги
  var $y = $('#serv_c' + $x).text(); //получаю стоимость услуги на 1 человека
  $('#serv_c' + $x).text($y * $s); //умножаю стоимость на 1 человека на вводимое кол-во людей
});

рони 16.09.2015 21:14

Эдди,
$('input.ser_n').on('input',  function() {

так пробовали?


Часовой пояс GMT +3, время: 07:45.