|
|
|
| как создать элемент формы с помощью JS? | |
|
|
|
|
|
|
|
для: Mootch
(08.12.2005 в 11:03)
| | есть такой способ, не очень красивый, но все же. в форму можно поместить div, у него есть свойство innerHTML в которое можно писать все что угодно, в том числе теги.
например:
<form ...>
<div id='div1"></div>
</form>
js
document.getElementById('div1').innerHTML='<input type='text' value=''...></input>';
попробуй, поидеи должно работать | |
|
|
|
|
|
|
|
для: Timon
(08.12.2005 в 12:12)
| | способ верен, но я бы посоветовал использовать вместо div'а тэг span.
ещё для динамического добавления элементов в докумунт страницы есть такие методы как createElement(), setAttribute() и appendChild(). | |
|
|
|
|
|
|
|
для: Mootch
(08.12.2005 в 11:03)
| | А может, проще его заранее в невидимый div загнать? | |
|
|
|
|
|
|
|
для: Киналь
(08.12.2005 в 19:15)
| | В форуме phpBB есть функция голосования. Нажимаешь "добавить вариант" и пояыляется новое поле. Как это сделать?
только без перезагрузки страницы =) | |
|
|
|
|
|
|
|
для: Mootch
(08.12.2005 в 19:32)
| | Тебе и пишут - загнать то, что должно появиться в невидимый div, а потом при каком-то событии (например, нажатие кнопки) сделать его видимым. | |
|
|
|
|
|
|
|
для: Mootch
(08.12.2005 в 19:32)
| | Наверное, надо не одно новое поле а столько, сколько раз нажата кнопка?
Во 2-м посте тоже написали, что делать, только надо написать не "=", а "+=" к innerHTML - добавлять коды, и каждый раз, конечно, менять содержимое, чтобы вписывать новый id в input.
Добавлю только, что через методы DOM делается то же самое, только немного длиннее, а выглядит "круче". Видишь ли, не просто-наглядно s1.innerHTML+="<input id=in"+i+" size=10>"; , а пишешь сначала in1=document.createElement('INPUT'), потом in1.setAttribute("id","in"+i); потом s1.appendChild(in1), где s1=document.getElementById('span1'); - id того самого span, в который собираетесь вставлять input-ы. | |
|
|
|
|
|
|
|
для: 12345
(09.12.2005 в 16:54)
| | А как проверить существует ли элемент с нужным мне ID ?
я нашел только такой способ:
if (elem = document.getElementById('ufile'+num)){}
|
Целесообразно ли его юзать? | |
|
|
|
|
|
|
|
для: 12345
(09.12.2005 в 16:54)
| | элементы создать получилось. Только при нажатии на кнопку - значения (value) элементов обнуляются.
И почему-то их value'ы не доходят до скрипта-обработчика, даже если элемент создан не JS. (тэг </form> стоит после </span> ;)) | |
|
|
|
|
|
|
|
для: Mootch
(11.12.2005 в 19:52)
| | А name у этих элементов разные?
> if (elem = document.getElementById('ufile'+num)){}
так и проверяют, или if (document.getElementById('ufile'+num)){} | |
|
|
|
|
|
|
|
для: 12345
(11.12.2005 в 20:12)
| | да | |
|
|
|
|
|
|
|
для: Mootch
(11.12.2005 в 20:16)
| | Тогда должен, но не обязан, что случается с innerHTML при работе с формами. Раз он не идёт, вписывайте value за ним в следующем операторе. Или пользуйтесь методами DOM, у них меньше глюков при работе с формами, хотя тоже есть. | |
|
|
|
|
|
|
|
для: 12345
(11.12.2005 в 20:42)
| | Эта ошибка возникает только в опере. Как быть? Оперолюбов оставлять без этой возможности ? | |
|
|
|
|
|
|
|
для: Mootch
(11.12.2005 в 20:48)
| | Я ж говорю, "вписывайте value за ним в следующем операторе"
А вот если name есть, тег создан не в JS, а он не отправляется, то тут в HTML где-то ошибка | |
|
|
|
|
|
|
|
для: 12345
(11.12.2005 в 20:52)
| | >Я ж говорю, "вписывайте value за ним в следующем
>операторе"
я про "И почему-то их value'ы не доходят до скрипта-обработчика, даже если элемент создан не JS" | |
|
|
|