Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > textarea в список с checkbox'ами


Автор: Rostik Ultra 19.2.2008, 10:17
в textarea находится список строк
как на javascript сделать чтобы рядом получить список (обычные строки разделённые <br>) и напротив каждой чекбокс

Автор: bars80080 19.2.2008, 10:35
Код

<script>
var k = 4;
function doag() {
    t = document.getElementById('er').value;
    t1 = t.split("\n");
    t2 = '';
    for(i = 0; i < t1.length; i++) {
        t2 += t1[i] + ' <input type="checkbox" name="ops[]" value="1" /><br />';
    }
    document.getElementById('as').innerHTML = t2;
}
</script>
<textarea id="er"></textarea>
<input type="button" onclick="doag()" value="push_me" />
<div id="as"></div>

Автор: Rostik Ultra 19.2.2008, 11:12
спасибо

у меня ещё один вопрос - могу ли я передать значения динамически сгенерированных элементов (в данном случае чекбоксов) на обработку php скрипту ?

Автор: bars80080 19.2.2008, 11:39
естесственно

если они у тебя будут построены в пределах формы, то после нажатия кнопки submit, они также полетят на сервер в составе массивов $POST или $_GET

Автор: Rostik Ultra 19.2.2008, 13:47
а если количество сгенерированных элементов заранее не известно ? то как передать их количество php скрипту чтобы он вернул нужный результат

например
textarea1 = "text1"
textarea2 = "text2"
textarea3 = "text3"
textarea4 = "text4"
textarea5 = "text5"


Автор: bars80080 19.2.2008, 14:17
посмотри этот же пример:
Код

<script>
var k = 4;
function doag() {
    t = document.getElementById('er').value;
    t1 = t.split("\n");
    t2 = '';
    for(i = 0; i < t1.length; i++) {
        t2 += t1[i] + ' <input type="checkbox" name="ops[]" value="1" /><br />';
    }
    document.getElementById('as').innerHTML = t2;
}
</script>
<form method="post"><textarea id="er"></textarea>
<input type="button" onclick="doag()" value="push_me" />
<div id="as"></div>
<input type="submit" value="send" name="send" />
</form>
<?
if(!empty($_POST['send'])) {
var_dump($_POST);
}
?>

я же специально задавал такие имена для чекбоксов, чтобы при приёме их можно было обработать с помощью foreach

Автор: Rostik Ultra 19.2.2008, 15:38
всё работает ...

у меня ещё пару вопросов

- как удалить динамически созданный элемент

- как адаптировать вновь созданные элементы в дизайн (чтобы например были вставлены в ячейки таблицы), чтобы они появлялись не один за другим (как наример textarea)

- как динамически созданным textarea задать парметры cols и rows


M
Sardar
Не делю темы, т.к. вопросы до того детские, что будут оскорблением для других участников форума :)
Полезно наугад открыть пару тем, полистать пару страниц, быстро схватишь конкретные базовые навыки.

Автор: bars80080 19.2.2008, 15:47
нус, товарисч:

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

удалить также как и создавал
Код
document.getElementById('as').innerHTML = '';

в ячейки таблицы вставляются либо также (<td id="as">), либо генерируем таблицу 
вот кусок кода
Код

function back_pass() {
    a1 = document.getElementById('dop_fio').getElementsByTagName('input');
    a2 = document.getElementById('dop_pas').getElementsByTagName('input');
    table = win_add.document.getElementById('pass_t');
    sikl = 0;
    for(i = 0; i < a1.length; i++) {
        row = table.insertRow(sikl + 1); 
        cell2 = row.insertCell(0); 
        cell2.innerHTML = '<input type="text" id="ap_pas[' + sikl + ']" class="ap_txt" value="' + a2[i].value + '" />';
        cell1 = row.insertCell(0); 
        cell1.innerHTML = '<input type="text" id="ap_fio[' + sikl + ']" class="ap_txt" value="' + a1[i].value + '" />';
        sikl++; }
    win_add.sikl = sikl; }

только для примера, это уже из моей задачи

по третьему пункту сам никогда не задумывался, во всяком случае, у textarea есть такие параметры как width и height, которые для простоты можно изначально задать в css

Автор: Rostik Ultra 19.2.2008, 17:28
Цитата

document.getElementById('as').innerHTML = '';

а как удалять отдельные элементы а не все сразу ?

Цитата

у textarea есть такие параметры как width и height, которые для простоты можно изначально задать в css

а в генерирующем скрипте можно задавать нужные параметры ?

Автор: bars80080 19.2.2008, 17:37
1. исключительно по вашей задаче, то есть что требуется
по-любому в этом случае либо сохранять изначально все эти строчки в массив, а по ходу действий выкидывать или добавлять нужные элементы, а затем заново отстраивать innerHTMLом,
либо каждый раз считывать существующие элементы и заново формировать, что сложнее, да и не нужно

2. да можно конечно
Код

document.getElementById('er').width = '200'; // или '200px';

Автор: Rostik Ultra 19.2.2008, 19:06
2 - а если несколько параметров ? то через запятую или точку ?
и ещё по 2 пункту
<script>
function check()
Код

{
    str = document.getElementById("text").innerHTML;
    array = str.split("\n");

    for(i=0;i<array.length;i++)
    {
        txtar = document.createElement('textarea');
        txtar.name='textar[]';
        txtar.innerHTML = array[i];
        document.getElementById("textareas").appendChild(txtar);
    }

}

в этом случае где указывать нужные параметры ? а то у меня возникают ошибки

Автор: bars80080 19.2.2008, 19:15
ну вот видите, вы решаете задачу не так как я предлагал, а созданием элементов

тут и просматривается разница между нами:
я к примеру не достаточно хорошо знаю js чтобы что-нибудь посоветовать что-нибудь,
но в отличие от вас я всё же стараюсь читать мануал, и потому нахожу простые решения сам

что значит ошибки? какие ошибки? что не так? что не получается?


для стилей есть вообще такая форма записи:
document.getElementById('er').style.   и здесь всё что вам угодно (backgroundPosition, border, display и т.д.), просто ширина у элементов появилась раньше чем поддержка css, потому она и вынесена в корень

читать -> мануал

Автор: Rostik Ultra 19.2.2008, 20:20
вроде как начинали на ты ...

с присвоением свойст текстовым полям разобрался  smile 

теперь буду разбираться с
- отдельным закрытием каждого созданного элемента
- вставкой генерируемых элементов куда надо

Автор: bars80080 20.2.2008, 10:37
ты, вы, какая разница?...

честно говоря, знаю ситуации когда нужно добавить дополнительное поле, но ни разу не видел где так уж нужно было убрать лишние поля

всё равно при приходе на сервер данных, нужно быть готовым к обработке пустых значений, неправильно введённых, намеренно обойдённых форм валидации и прямых атак. поэтому одно лишнее поле или десять - это вопрос философский, главное, чтобы у тебя сервер с этим нормально справлялся

Автор: Rostik Ultra 20.2.2008, 10:58
мне эти поля нужно вставлять/убирать просто ради собственного удобства

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)