Создание колонок таблицы через jQuery

226
15 января 2018, 07:36

При вводе значения в поле ( цифры от 1 до 100 ) должны создаваться колонки таблицы с полями <input>.

Если мы, в первый раз ввели 30, то создастся 30 колонок с <input>, в каждой ячейке.
Если, во второй раз мы введем 20, то значения <input> в первых 20 колонках сохраняются, а след. 10 колонок убираются и значения их <input> обнуляются.

И у каждого <input> должны быть уникальные класс, к примеру, у первого - col1, у второго - col2.

Answer 1

Не совсем понятно что имеется в виду

10 колонок убираются и значения их обнуляются.

Если колонки удаляются, то инпуты, которые были в колонках, удаляется вместе с ними. Вот примерный код:

$('input').on('change', function () {
    updateTable(this.value | 0);
});
function updateTable(columnsCount) {
    var $table = $('table');
    var $columns = $table.find('td');
    for (var i = $columns.length; i-- > columnsCount;) {
        $columns[i].remove();
        $columns.length--;
    }
    for (var i = $columns.length; i <= columnsCount; i++) {
        //добавление колонок в $table соответствии с шаблоном
    }
}
Answer 2

В итоге сам додумался до такого:

var x = 0; 
function input() { 
 
 
	if(x > $("#input").val()){ 
		for (var j = x; j > $("#input").val(); j--){ 
			k = j-1; 
			$(".el"+k).remove(); 
			$(".el"+k).remove(); 
		} 
		x = j; 
	 
	} 
 
	else if (x < $("#input").val()){ 
 
		for (var i = x; i < $("#input").val(); i++) { 
		 
			$('.channel_numbber').append('<td class="el'+i+'"><input class="col1_'+i+'"></td>'); 
			$('.frequency_minAndMax').append('<td class="el'+i+'"><input class="col2_'+i+'"></td>'); 
		 
		} 
		x = i; 
	} 
   
}
<!DOCTYPE html> 
<html lang="en"> 
<head> 
	<meta charset="UTF-8"> 
	<title>Document</title> 
	<script src="js.js"></script> 
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
	<style> 
		.container{ 
			width: auto; 
			overflow: scroll; 
		} 
		.slova{ 
			width: 300px; 
			height: auto; 
		} 
	</style> 
 
</head> 
<body> 
	<div class="container"> 
		<input type="text" id="input" onblur="input()"> 
 
		<table id="myTable"> 
			<tr class="channel_numbber"> 
				<td> 
            		<label for="" class="slova">X</label> 
        		</td> 
			</tr> 
			<tr class="frequency_minAndMax"> 
				<td> 
            		<label for="" class="slova">Y</label> 
        		</td> 
			</tr> 
		</table> 
	</div> 
</body> 
</html>

Есть идеи по оптимизации или этот код венец творения?))

READ ALSO
Изменение value +/-1000 по нажатию кнопки

Изменение value +/-1000 по нажатию кнопки

Не получается сделать складывание и вычитание к value по нажатию кнопокЗначение input принимает, но в String, а прибавить к нему не получается, прибавляются...

305
Добавить строку в таблицу

Добавить строку в таблицу

как добавить еще 1 строку в таблицу по нажатию кнопки

448
Контактная форма на Foundation

Контактная форма на Foundation

Помогите сверстать с помощью фреймворка Foundation эту контактную формуПроблема в том что не могу разобраться как работать с отступами со вложенными...

286
Поддержка лигатурных иконок браузерами

Поддержка лигатурных иконок браузерами

Наткнулся на интересную штуку - шрифт, в котором вместо иконки ты пишешь слово, а оно показывается как иконкаНе знаю, как сделано именно тут,...

238