Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Перемещение по ячейкам таблицы (https://javascript.ru/forum/dom-window/56764-peremeshhenie-po-yachejjkam-tablicy.html)

AlekseyOv 03.07.2015 14:36

Перемещение по ячейкам таблицы
 
Господа, Здравствуйте!
Прошу помощи в решении след. задачи!
Есть таблица, например, 10*10. Внутри каждого TD расположено поля ввода INPUT. После ввода какого-нибудь значения в инпут, например "1", оставаясь в фокусе в этом ипуте, нужно нажать на клавишу F2 и чтобы это значение, т.е "1" продублировалось в каждый последующий второй инпут находящийся в этой же строке!
У меня получается только так (ниже кусок кода), что у меня вся строка забивается через 2 ячейки, а мне нужно так, чтобы эта автоматическая простановка шла после (т.е справа) инпута, в котором сейчас фокус.
Т.е если у нас таблица 10*10, я тыкаю в 5-ю ячейку второй строки, ввожу туда значение "1" и нажимаю на F2 - у меня должно это значение прописаться только в ячейки 7 и 9 этой же строки (т.е стоящие справа от нашей 5-й), а все ячейки, которые были перед 5-й - туда ничего не вставлять!

$('input[type=text]').focus(function(){
	var count = 0;
	$(this).bind('keydown', 'f2', function(){
		value = $(this).val(); 
		$(this).parent('td').parent('tr').find('td > input[type=text]').each(function() {
			count++;
			if(count==2){
				count = 0;
				$(this)[0].value = value;
			}
		});
	});
});

Тут что-то совсем простое, но не соображу какое условие для ИЧ правильно сделать, чтобы перебирал ячейки после инпута в котором сейчас фокус...

kostyanet 03.07.2015 16:10

Цитата:

Сообщение от AlekseyOv
в каждый последующий второй инпут находящийся в этой же строке!

Астрология какая-то. Технически попробуйте изложить ТЗ.

AlekseyOv 03.07.2015 16:49

Вложений: 2
После ввода в ячейку, которая находится в 1-й строке (см. картинку 1), значения "1" и нажатия на клавишу F2, результат должен получиться как на картинке 2
п.с. в первом сообщении своём видать запутанно написал, извиняюсь!

kostyanet 03.07.2015 17:04

Это мы наблюдаем рост ютуба-поколения программистов. Остается загадкой как они текст самих скриптов осиливают, если документацию написать не могут.

Имеется строка из n полей ввода. После нажатия F2 значение поля n+2 должно быть скопировано в поля n+1 до n.length - так потянет?

AlekseyOv 03.07.2015 17:09

Цитата:

Сообщение от kostyanet (Сообщение 377517)
Это мы наблюдаем рост ютуба-поколения программистов. Остается загадкой как они текст самих скриптов осиливают, если документацию написать не могут.

Имеется строка из n полей ввода. После нажатия F2 значение поля n+2 должно быть скопировано в поля n+1 до n.length - так потянет?

Так точно!

kostyanet 03.07.2015 17:09

Цитата:

Сообщение от AlekseyOv
которая находится в 1-й строке

Для 2-й строки другие правила?

Цитата:

Сообщение от AlekseyOv
значения "1"

Для значения "2" еще другие правила?

Цитата:

Сообщение от AlekseyOv
как на картинке 2

Так вам нужны красные квадратики?

kostyanet 03.07.2015 17:16

Цитата:

Сообщение от AlekseyOv
Так точно!

Как бы не так. Короче, проиндексируйте свои инпуты и тупо их считайте. Как только больше и по модулю нечетное - скопировать.

Разумеется всю эту жиквери-бредятину надо выкинуть и сделать нормальную функцию или объект с методами.

AlekseyOv 04.07.2015 12:06

Цитата:

Сообщение от kostyanet (Сообщение 377521)
Для 2-й строки другие правила?
Для значения "2" еще другие правила?
Так вам нужны красные квадратики?

Причём тут значение 2? Я писал фразу "вводим значение, НАПРИМЕР, 1"...это значит что тут могло быть и 2 и 22 и 222 - "Например" - значит любое значение.
Причём тут красные квадратики? О них ни слова не было в тексте...
Мда...профессор так профессор...

Админ, можешь закрывать тему!
Получил ответ на другом форуме: оказалось по моему вопросу нужно было использовать nextAll() и селектор even

А по ответам типа такого:
Цитата:

Сообщение от kostyanet (Сообщение 377517)
Это мы наблюдаем рост ютуба-поколения программистов.

Мы наблюдаем типичного умача-форумчанина, который помимо ответов по сути вопроса (и не только) еще и поливает помоями задающего - хреновый из Вас, kostyanet, профессор!

рони 04.07.2015 17:06

делегирование для инпутов в таблице
 
Вариант без jquery, изменить значение в инпут и нажать F2
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>
<body>
<table width="400">
	<thead>
		<tr>
			<th>Title 1</th>
			<th>Title 2</th>
			<th>Title 3</th>
            <th>Title 4</th>
			<th>Title 5</th>
			<th>Title 6</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td><input></td>
			<td><input></td>
			<td><input></td>
            <td><input></td>
			<td><input></td>
			<td><input></td>
		</tr>
		<tr>
			<td><input></td>
			<td><input></td>
			<td><input></td>
            <td><input></td>
			<td><input></td>
			<td><input></td>
		</tr>
	</tbody>
</table>

<script>
var table = document.querySelector("table");
table.addEventListener("keydown", function(a) {
    var c = a.target;
    if ("INPUT" == c.tagName && 113 == a.keyCode) {
        var d;
        for (a = c.parentNode; "TR" != a.tagName && a;) a = a.parentNode;
        if (a) {
            a = a.querySelectorAll("input");
            for (var b = 0, e = 1; a[b]; b += e) a[b] == c && (d = c.value, e = 2), void 0 != d && (a[b].value = d)
        }
    }
});
</script>
</body>
</html>

kostyanet 06.07.2015 06:14

Цитата:

Сообщение от AlekseyOv
"Например" - значит любое значение.

Возьмите соцобязательство повысить уровень абстракции в следующем квартале на 20%, например.


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