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


Автор: sunkitten 26.5.2008, 14:56
Добрый день господа.
Есть несложный рабочий кроссбраузерный скрипт, позволяющий добавлять и удалять файловое поле.
Код

<script language="JavaScript" type="text/javascript">
<!--
function del(val)
{
    if(document.getElementById)
    {
        while (val.tagName != 'TR')
        {
            val = val.parentNode;
        }
        val.parentNode.removeChild(val);
    }
}
function add(val)
{
    if(document.getElementById)
    {
        while (val.tagName != 'TR')
        {
            val = val.parentNode;
        }
        var newTr = val.parentNode.insertBefore(val.cloneNode(true),val.nextSibling);
    }
}
//-->
</script>

и HTML код формы
Код

<form enctype="multipart/form-data" method=post>
<table>
  <tr>
    <td><input type="file" name="myfile[]"></td>
    <td><input type="button" value=" - " onclick="del(this);">
        <input type="button" value=" + " onclick="add(this);"></td>
  </tr>
</table>
<input class=button type=submit value="Upload">
</form>


Скрипт рабочий и он был бы вообще супер, если бы не два момента.
Первая - когда добавляем новой поле, оно появляется со значением предыдущего поля, а очень хотелось бы появление чистого.
Вторая - удаляя поля есть возможность удалить последнее, а очень хочется его оставить. То ли кнопку удаления задисейблить, толи вообще убрать у этого поля кнопку удаления...

На данном форуме около 20 тем я просмотрел с аналогичными вопросами, но к сожалению ничего подходящего не нашел. В какой-то теме нашел линк на *http://wdh.suncloud.ru/dhtml03.htm, сходил, покурил, но не торкнуло...

Может мне кто-нибудь помочь?  smile  smile 

Автор: Michael.de 26.5.2008, 18:58
sunkitten:
1. а какая проверка в этом if происходит??
Код
if(document.getElementById){...}

2. Я бы убрал кнопки '+' и '-' из строки с input - зачем их "клонировать" smile

Автор: sunkitten 27.5.2008, 23:11
Ах уважаемый Michael.de, я бы с удовольствием ответил на Ваш вопрос, если бы знал что необходимо ответить. Скрипт написал естественно не я. Я даже не помню, где взял его. Просто когда попадается что-то полезное, сохраняю у себя на винте, а потом когда нужно выискиваю и пытаюсь приспособить.
Если Вам не составляет труда - внесите изменения в скрипт, по возможности учитывая мои пожелания.
Это хороший, небольшой и кроссбраузерный пример. Он пригодится многим людям. Его конечно можно использовать и в таком виде, но те два момента не дают мне покоя.

 smile  smile  smile 

Автор: Padonak 29.5.2008, 23:46
sunkitten, посмотри ты http://fisioterapiautebo.com/padonak/webdeveloper/dyn_form.htm хотел?

Автор: sunkitten 30.5.2008, 00:09
Да г-н Padonak, оба моменты учтены. Спасибо.
Кстати, это понадобится всем девелоперам, которые стремятся к повышению юзабельности и кроссбраузерности. Дело в том, что новая версия "Огнелиса" (Firefox Setup 3.0 релиз кандидат) очень странно ведет себя с файловыми полями.
К примеру есть форма на сайте. Зверьки её заполняют. Выбирают файл для закачки (картинка, txt, не важно какой файл). А потом передумывают добавлять этот файл. И если в других бросверах, что бы избежать загрузки выбранного файла, можно поставить курсор в файловое поле формы и очистить его, то последний огнелис этого сделать не даст, и остается либо аплоадить нежеланный файл, либо перегружать страницу с формой...

Я бы прибавил репутации Вам, да слабоват ещё в коленках  smile 

Автор: Padonak 30.5.2008, 00:16
ты это прекращай камрад придумал тоже меня господином обзывать smile или это ты там другое слово сократил? user posted image подошло и слава богу

Автор: SelenIT 30.5.2008, 01:56
Цитата(sunkitten @  30.5.2008,  00:09 Найти цитируемый пост)
И если в других бросверах, что бы избежать загрузки выбранного файла, можно поставить курсор в файловое поле формы и очистить его

Safari, насколько мне известно, тоже не позволяет (более того, там и поля-то нет). Вообще последняя тенденция - минимизировать возможности для манипуляций с полем аплоуда (помимо вызова стандартного диалога), на всякий пожарный и во избежание... А какой-то из IE, насколько я помню, при попытке отправить форму, в которой поле аплоуда поредактировали руками и в нем остался несуществующий путь, вообще валился с системной ошибкой...

Автор: sunkitten 30.5.2008, 18:21
Padonak, да нет, это всего-лишь проявление уважения и благодарности за выполненную просьбу  smile 

Мне интересно - это я один заморачиваюсь над этим и всем остальным девелоперам "накласть" на это?!
Может мне пересмотреть свою внутреннюю политику и моральные устои  smile 

Автор: Padonak 30.5.2008, 21:53
Цитата(sunkitten @ 30.5.2008,  18:21)
Мне интересно - это я один заморачиваюсь над этим и всем остальным девелоперам "накласть" на это?!
Может мне пересмотреть свою внутреннюю политику и моральные устои  smile

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

кстати я могу поспорить что тут кишмя кишит еще и челов которые сами нифига делать не хотят а рассчитывают что тут непременно найдется дауноватый энтузиаст который сделает за них какой-нибудь зачет пока они квасят пиво с телками. я видал такое неоднократно честное слово! причем не только на русских форумах. таких хитропенетрированных перцев навалом например на webdeveloper.com хотя там есть и крайне продвинутые умнейшие чуваки.

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

думаю что наши последние посты скорее всего потрут как оффтоп smile 

Автор: AKS 31.5.2008, 07:38
Цитата(sunkitten @  30.5.2008,  18:21 Найти цитируемый пост)
Может мне пересмотреть свою внутреннюю политику и моральные устои   

Да, именно это и нужно сделать, чтобы не возникали вопросы, вроде: "всем остальным девелоперам "накласть" на это?!".
Начать надо с прочтения вот этой статьи: http://www.rsdn.ru/Info/Howtoask.xml.

Автор: sunkitten 6.6.2008, 21:29
Не хочу флеймить, но все таки спрошу: г-н AKS, я не правильно задал вопрос? Или чего??
Скажите - как непосредственно Вы решаете проблему, описанную мною выше?

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