|
|
|
| Необходимо загружать несколько фотографий с одной формы. Как это сделано при отправке писем на рамблере. Там после прикрепления первого файла нажимаешь ссылку "добавить еще файл", ниже сразу выскакивает еще одно окошко для загрузки второго файла и т.д. Подскажите пожалуйста, как это реализовать. | |
|
|
|
|
|
|
|
для: Костян
(09.06.2008 в 21:05)
| | Это никаким боком к MySQL не относится. Смотрите здесь пример:
http://softtime.ru/forum/read.php?id_forum=4&id_theme=54382&page=1 | |
|
|
|
|
|
|
|
для: sim5
(09.06.2008 в 21:22)
| | Да, ошибся веткой, извиняюсь. Спасибо за помощь!!! | |
|
|
|
|
|
|
|
для: sim5
(09.06.2008 в 21:22)
| | sim5, воспользовался Вашей ссылкой, все отлично работает, только есть две небольшие мелочи, которые немного портят общую картину:
1. Подскажите пожалуйста, как сделать так, чтобы новое поле для ввода файла загружалось пустым, а не с путем к предыдущему загруженному файлу.
2. Каким образом можно ограничить количество загружаемых файлов, предположим, их должно быть три. | |
|
|
|
|
|
|
|
для: Костян
(12.06.2008 в 22:46)
| | Не задавайте вопросов касающихся JS в разделе MySQL - они могут остаться у вас без ответа.
Что касается "чтобы новое поле для ввода файла загружалось пустым", значит вы смотрите код под FF, в IE оно и будет пустым. Ограничить число добавляемых элементов можно, но на сервере это нужно будет все равно проверять, так как ограничение будет на клиенте, и обойти его труда не составит. Сделайте так. Укажите имя форме, например, fileform. В функцию addFile первой строкой добавить:
function addFile(btn) {
if (document.forms('fileform').elements.length == 10) return false;
//код далее
|
Это, если исходить из того, что в вашей форме, кроме полей выбора изображений, кнопок + и -, и кнопки submit, больше ничего нет. Иначе учитывайте то, что при каждом добавлении, у вас добавляется по три элемента в форму. Складывая их с уже имеющимися, получите требуемое ограничение на число добавляемых полей file.
Для того чтобы очистить поля добавляемых элементов, в эту же функцию, в самый ее конец, добавьте следующее:
var f = document.forms('fileform').elements;
for (i=f.length-1; i>0; i--) {
if (f[i].type=="file") {
f[i].value = "";
break;
}
}
|
Если эта форма одна на странице, то имени ей можно не давать, а обращаться к ней по индексу:
document.forms[0]. | |
|
|
|
|
|
|
|
для: sim5
(13.06.2008 в 06:23)
| | Да, все гораздо сложнее, чем я пытался сделать сам. Спасибо большое. | |
|
|
|
|
|
|
|
для: Костян
(13.06.2008 в 07:26)
| | Не работает очистка полей. И форма виснет, вообще ни на что не реагирует. А по поводу ограничения количества загружаемых файлов - мне достаточно если при попытке загрузки четвертого выйдет сообщение о том, что возможна загрузка только трех. Я пытался вставить условие в цикл в JS - не выходит сообщения. Где ошибка? Вот код:
<!--
function dropFile(btn)
{
if(document.getElementById)
{
while (btn.tagName != 'TR') btn = btn.parentNode;
btn.parentNode.removeChild(btn);
}
}
function addFile(btn)
{
if(document.getElementById)
{
while (btn.tagName != 'TR') btn = btn.parentNode;
var newTr = btn.parentNode.insertBefore(btn.cloneNode(true),
btn.nextSibling);
thisChilds = newTr.getElementsByTagName('td');
for (var i = 0; i < thisChilds.length; i++)
{ if (i > 3) alert("Можно загрузить только 3 фото") ;
if (thisChilds[i].className == 'files')
thisChilds[i].innerHTML = ' <input size="32" name="att[]" class=input type="file">';
}
}
}
//-->
|
| |
|
|
|
|
|
|
|
для: Костян
(13.06.2008 в 21:10)
| | Вам не достаточно того, что я написал? Вы хотя бы понимаете, что означает эта запись в коде:
thisChilds = newTr.getElementsByTagName('td'); ??? С какого боку она у вас должна проверять наличие 3 полей file?
Я же вам написал самый простой подход, который не требует от вас глубоких знаний JS. Ну что может быть проще - посчитайте все поля вашей формы, включая скрытые, другие текстовые, списки и т.д. (если они у вас есть), включая и кнопку submit. Плюс к этим полям добавтье 3 поля ввода: одно поле file и два поля, которыми вы добавляете и удаляете элемент file. Добавляя/удаляя поле file, в форме добавляются/удаляются по 3 элемента. Неужели так трудно посчитать сколько всего элементов в форме будет при трех полях file? А если это вы сможете сосчитать, то останется:
function addFile(btn) {
if (document.forms('fileform').elements.length == N) {
alert("Можно загрузить только 3 фото");
return false;
}
//код далее
|
Где N - это число всех полей формы после добавления трех полей file.
Под каким браузером у вас не очищаются поля, и как вы это делаете? | |
|
|
|
|
|
|
|
для: sim5
(14.06.2008 в 07:02)
| | Я извиняюсь, что заставил Вас нервничать. Правда, не хотел. Но в своем сообщении я лишь просил помочь с выводом именно сообщения по поводу загрузки трех фото. В моем случае больше трех и не загрузится физически, просто об этом нужно было предупредить юзера. Теперь мне все ясно. Большое спасибо за помощь.
Если не трудно, подскажите, с какой книжкой быстрее и понятнее будет изучить JS? И с чего лучше начать? | |
|
|
|
|
|
|
|
для: Костян
(14.06.2008 в 19:23)
| | С чего вы решили, что я нервничаю? :)) Не беспокойтесь за мои нервы, они у меня в порядке.) Насчет книги, с которой можно начинать, сказать не могу. Дело в том, что изучение JS потребует изучения и DOM модели браузера, а она различна, например, у IE и Opera. Поэтому нужна книга, которая бы описывала и эти различия, а не просто давала понятия о языке JS. Я пользуюсь "JavaScript. Библия пользователя" Д. Гудман, М. Моррисон. | |
|
|
|
|
|
|
|
для: sim5
(14.06.2008 в 19:53)
| | Спасибо! | |
|
|
|