Кнопка очистить поле file
Ребята, помогите пожалуйста.
Столкнулся с такой проблемой, нужно было написать скрипт для отдельной очистки поля с типом файл. Собственно вот он: function ClearFile(idForm) { var form = document.getElementById(idForm); var values = new Array(form.elements.length); for (var i = 0; i < form.elements.length; i++) { values[i] = form.elements.item(i).value; } form.reset(); for (var i = 0; i < form.elements.length; i++) { if(form.elements.item(i).type != 'file') { form.elements.item(i).value = values[i]; } } } <br /><input type="button" value="<?=$lang[300]?>" onclick="ClearFile('fMain');" /> Принцип работы таков, сначала мы запоминаем все поля, потом чистим всю форму и обратно восстанавливаем все поля кроме полей с типом file. Все работает, очищаются все поля c типом file, но чекбоксы, если были отмечены, слетают. Перерыл кучу литературы, не знаю что делать =( |
а еще радио и селеты будут слетать
http://javascript.ru/forum/misc/2090...tml#post121940 Попробуйте это решение, но оно не заточено под select с multiple. Если нет обработчиков на input type file, то самое просто решение просто удалять его и вставлять новый. |
у type=text, textarea, type=password, type=hidden, type=select значение хранится в свойстве
value строкового типа.у чекбоксов и радиобоксов значение считывается из свойства checked , которой должно быть булевого типа (true\false).поэтому и слетают |
Хмм... тогда как решить ? Может создать второй массив, в который записывать все checked, если этот checked выделен.
Записываем: - сначала пробегаемся по первому с value. - потом по второму с checked аналогично записывая стираем все. Восстанавливаем сначала все value где тип не файл затем восстанавливаем все checked. Что-то мне подсказывает что это плохая идея. |
nikita.mmf, предложил отличный способ - удалять и создавать заново type="file" и не е-ся с многочисленными полями
в JQUERY это даже можно сделать, не убирая обработчиков onchange (функция detach) |
Спасибо melky,
Просто хочется что бы на всех браузерах скрипт хорошо отрабатывал, но что-то я все больше склоняюсь к тому, что нужно тупо адаптировать под одни из последних версий популярных браузеров. =( |
Цитата:
|
Часовой пояс GMT +3, время: 05:20. |