Цитата:
|
<html> <body> <select onchange="change(this.value);"> <option value="0">Без ограничений</option> <option value="1">1</option> <option value="2">2</option> <option value="4">4</option> <option value="6">6</option> <option value="10">10</option> </select> <table border="1"> <thead> <tr> <th scope="col">Поле 1</th> <th scope="col">Поле 2</th> <th scope="col">Поле 3</th> <th scope="col">Поле 4</th> </tr> </thead> <tbody id="dynamic"></tbody> </table> <script> function getTr () { var tr = document.createElement('tr'); var html = [ '<td>', '<input type="text">', '</td>', '<td>', '<input type="text">', '</td>', '<td>', '<input type="text">', '</td>', '<td>', '<input type="text">', '</td>'].join(''); tr.innerHTML = html; return tr; } var tb = document.querySelector('#dynamic') function change (v) { console.log(v); if (v == 0) { Array.prototype.forEach.call(tb.children, function (tr) { tr.style.display = 'none'; }); } else { for (var i = 0; i < v; i++) { tb.appendChild(getTr()); } } } </script> </body> </html> |
Спасибо за ответ, но строки-то добавляются, это и мой (ну не мой, если честно, а найденный в инете) скрипт делает, а вот таблица (с ее заголовоком) при выборе "Без ограничений" не скрывается.
В LiveCycle FormDesigner я делаю так: <event activity="exit" name="event__exit"> <script contentType="application/x-javascript">Table3.Row1.instanceManager.setInstances(К_воВод.rawValue); this.resolveNode("Table3").presence = "visible"; </script> </event> <event activity="change" name="event__change"> <script contentType="application/x-javascript">if ($.boundItem(xfa.event.newText) == "Без ограничений") { this.resolveNode("Table3").presence = "hidden"; } </script> </event> и все классно работает, а вот в HTML у меня не получается. |
ну дак, найдите вашу таблицу
var table = document.querySelector('table'); и скройте ее table.style.visibility = 'hidden'; |
Да дайте человеку конкретный рабочий код, который он просит. Видно же , что человек слабо знает эту тему, в инете может не один час искал и не нашел. Может он простой пользователь и ему это понадобится один раз в жизни. Надо то вставить в код наверное всего пару строк и дело с концом. Если бы я мог, то без проблем помог. Всем всего наилучшего.
|
III, вот тебе правильное решение. Я хотя и не спец, но проблему твою решил. Пользуйся на здоровье.
<body> <p><strong>Динамическая таблица.</strong></p> <caption> <!-- Кол-во элементов option и их значения value можно задать произвольно //--> <select id="rows_setup"> <option value="0">--Установить кол-во строк--</option> <option value="0">Без ограничений</option> <option value="1">1</option> <option value="2">2</option> <option value="4">4</option> <option value="6">6</option> <option value="10">10</option> </select> </caption> <p><p/> <form id= Tablica method="post" action=""> <table width="650" border="1" cellspacing="0" cellpadding="5"> <!-- Заголовки //--> <thead> <tr> <th scope="col">Поле 1</th> <th scope="col">Поле 2</th> <th scope="col">Поле 3</th> <th scope="col">Поле 4</th> </tr> </thead> <!-- Сюда будем добавлять строки //--> <tbody id="dynamic"></tbody> </table> </form> <script> /* Навешиваем логику: */ setupTable( "dynamic", /* ID элемента <tbody> таблицы */ "rows_setup", /* ID элемента <select> для установки кол-ва строк */ {1:"val1", 2:"val2", 3:"val3", 4:"val4"} /* Конфигурация строки таблицы */ ); function setupTable(tableId, selectId, fields) { var htmlTBody = document.getElementById(tableId), htmlSelect = document.getElementById(selectId), rowTpl = document.createElement("TR"); /* Строим шаблон строки таблицы один раз, в дальнейшем будем просто его клонировать */ for(var field in fields) { if (false === fields.hasOwnProperty(field)) continue; var TD = document.createElement("TD"), INPUT = document.createElement("INPUT"); INPUT.name = fields[field] + "[]"; TD.appendChild(INPUT); rowTpl.appendChild(TD); } // Вешаем обработчик на элемент управления кол-вом строк htmlSelect.onchange = function (e) { var numRows = htmlSelect.options[htmlSelect.selectedIndex].value; /* Отслеживаем отрицательные значения а то мало ли какие там значения в option понаставят */ numRows = numRows < 0 ? 0 : numRows; /* Удаляем те строки которые есть. */ while(htmlTBody.firstChild) htmlTBody.removeChild(htmlTBody.firstChild); for (var i = 0; i < numRows; i++) { htmlTBody.appendChild(rowTpl.cloneNode(true)); } if (numRows == 0) { htmlTBody.parentNode.style.display = "none"; } else { htmlTBody.parentNode.style.display = ""; } }; } </script> </body> |
Цитата:
Не так это делается. Заводится 1 поле на 1 ячейку (кажется у вас на этом и кончается) которые тупо подсовываются в активную строку и используются тупо как таковые, ну, как input'ы. Данные с которых тупо валятся в обычный {} из которого по субмиту валятся то самое поле после JSON' и уходят таким макром на сервер, а там json_decode() и вперде. |
Проблему представляют кнопки file, вот их да, придется размножать.
|
Человек пишет:"Прошу строго не судить, я всего пару недель как осваиваю HTML и JS." Ему, я так понимаю, надо просто подсказать что, как и где писать в коде, а вы про сервер толкуете. Да он просто на простой странице хочет понять что к чему.
|
Не гоните пургу, эту преамбулу паяют все кому западло признаться в невежестве.
Так вот начинающие 2 недели пишут return "Hello World" а не datagrid рисуют. |
Часовой пояс GMT +3, время: 23:07. |