вопрос про динамически созданные textarea

H
На сайте с 21.12.2007
Offline
24
2107

есть такой код, который динамически создаёт отдельные текстовые поля для каждой строки в textarea

<script>

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

for(i=0;i<array.length;i++)
{
txtar = document.createElement('textarea');
txtar.setAttribute("name","mytextarea");
txtar.setAttribute("cols","10");
txtar.setAttribute("rows","2");
txtar.setAttribute("wrap","PHYSICAL");
txtar.name='textar[]';
txtar.innerHTML = array;
document.getElementById("textareas").appendChild(txtar);
}

}
</script>

<form method="post" action="1.php">

<textarea id="text" name="text"></textarea>
<input type="button" onclick="check()" value="push_me" />
<div id="textareas"><br><br></div>
<input type="submit" value="send" name="send" />

</form>

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

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

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

B
На сайте с 26.12.2006
Offline
51
#1
hrenoid:
есть такой код, который динамически создаёт отдельные текстовые поля для каждой строки в textarea
<script>

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

for(i=0;i<array.length;i++)
{
txtar = document.createElement('textarea');
txtar.setAttribute("name","mytextarea");
txtar.setAttribute("cols","10");
txtar.setAttribute("rows","2");
txtar.setAttribute("wrap","PHYSICAL");
txtar.name='textar[]';
txtar.innerHTML = array;
document.getElementById("textareas").appendChild(txtar);
}

}
</script>

<form method="post" action="1.php">

<textarea id="text" name="text"></textarea>
<input type="button" onclick="check()" value="push_me" />
<div id="textareas"><br><br></div>
<input type="submit" value="send" name="send" />

</form>


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

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

1)зачем двумя разными путями пытаешся установить два разных значения name

2)appendChild добавит их внутрь нужного элемента, в твоем коде добавляет в <div id="textareas"><br><br></div> так что куда ты руками поставишь этот div туда они и добавятся

3) Пробелы генерируются потому что в windows при переносе строк добавляется не только \n а еще и символ \r т.е. пара символов \r\n

str.split("\r\n"); решит проблему для винды, но под другими ОС работать правильно не будет

так что если не критично что будет только в винде работать то оставляй str.split("\r\n");

если кретично, отдельно делай проверку на символ \r

Чтобы сделать удаление отдельной textarea создавай каждую текстареа в отдельном div, создавай также в этом диве кнопку удалить по нажатии на которую удаляется этот div через removeChild

PHP,MySQL,JavaScript,AJAX
H
На сайте с 21.12.2007
Offline
24
#2

спасибо за ответы

зачем двумя разными путями пытаешся установить два разных значения name

какой из них предпочтительнее ?

appendChild добавит их внутрь нужного элемента, в твоем коде добавляет в <div id="textareas"><br><br></div> так что куда ты руками поставишь этот div туда они и добавятся

а как сделать чтобы окна шли вертикально ?

с этим подскажешь ?

как сделать чтобы при нажатии на кнопку под каждым динамически созданным textarea он удалялся с страницы (а то у меня удаляются все сразу которые были динамически созданы)
B
На сайте с 26.12.2006
Offline
51
#3
hrenoid:

какой из них предпочтительнее ?

выбирай любой который нравится но только один а не два;)

hrenoid:

а как сделать чтобы окна шли вертикально ?

добавь например: document.getElementById("textareas").appendChild(document.createElement('br'));

после document.getElementById("textareas").appendChild(txtar);

да и document.getElementById("text").innerHTML; замени на document.getElementById("text").value;

так будет коректнее

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

Kolyaj
На сайте с 28.03.2006
Offline
69
#4
bleed:
3) Пробелы генерируются потому что в windows при переносе строк добавляется не только \n а еще и символ \r т.е. пара символов \r\n
str.split("\r\n"); решит проблему для винды, но под другими ОС работать правильно не будет
так что если не критично что будет только в винде работать то оставляй str.split("\r\n");
если кретично, отдельно делай проверку на символ \r


str.split(/\r?\n/);
H
На сайте с 21.12.2007
Offline
24
#5

bleed +1 _____________

hrenoid добавил 22.02.2008 в 00:52

<script>

function check()

{

str = document.getElementById("text").value;

array = str.split("\r\n");

for (i=0; i<array.length; i++)

{

var newElem=document.createElement('div');
newElem.setAttribute('id','dt');
document.body.appendChild(newElem);




txtar = document.createElement('textarea');
txtar.setAttribute("name","mytextarea");
txtar.setAttribute("cols","10");
txtar.setAttribute("rows","2");
txtar.innerHTML = array;

document.getElementById("textareas").appendChild(txtar);



document.getElementById("textareas").appendChild(document.createElement('br'));
document.getElementById("textareas").appendChild(document.createElement('br'));



but = document.createElement('button');
but.setAttribute("value","Button");
but.setAttribute("onclick","del_b()");


document.getElementById("textareas").appendChild(but);



document.getElementById("textareas").appendChild(document.createElement('br'));
document.getElementById("textareas").appendChild(document.createElement('br'));



var newElemClose=document.createElement('/div');
document.body.appendChild(newElemClose);


}

}



function del_b()

{
// document.getElementById('dt').innerHTML = '';

txtar.parentNode.removeChild(txtar);
}


</script>



<form method="post" action="1.php">

<textarea id="text" name="text"></textarea>
<input type="button" onclick="check()" value="Start">

<table width=100%>
<tr>
<td width=50%></td>
<td width=50%><div id="textareas"></div></td>
</tr>
</table>

<input type="submit" value="Send" name="send">

</form>

чё то не удаляются текстовые окна ...

что не правильно ?

H
На сайте с 21.12.2007
Offline
24
#6

вопрос решён

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий