JavaScript одна функция к нескольким input полям
Добрый день!
Помогите пожалуйста с JS Нашел нужный мне код - вот он Код:
<style> на странице код Код:
<input type="file" id="files" name="files[]" /> С одним полем по выбору файла это работает. У меня таких полей пять шт. (должно быть именно пять полей с выбором файла). и данный код не работает со вторым, третьем, ит.д полями - превью отображается только в первом поле в остальных только имя файла прописывается.. ![]() так как я совсем ничего не понимаю в JS, я допер только до того, что - размножил данные скрипты (пять штук) - и каждому полю выбора и вывода присвоил уникальные id и прелипил каждый скрипт к этим полям. Таким образом работает и изображения появляются под каждым полем. ![]() Но теперь на странице пять скриптов... Пожалуйста подскажите как можно и вообще можно ли как нибудь объединить это все дело в один скрипт? На данны момент у меня это работает следующим образом. Код:
<input name="fileAttach[]" type="file" id="files" /><br /> Код:
<script type="text/javascript">if(window.FileReader){function handleFileSelect(a){var b=a.target.files;var c=b[0];var d=new FileReader;d.onload=function(a){return function(b){document.getElementById("list").innerHTML=['<img src="',b.target.result,'" title="',a.name,'" width="100px"/>'].join("")}}(c);d.readAsDataURL(c)}}document.getElementById("files").addEventListener("change",handleFileSelect,false)</script> |
попробуйте вот таких 5 написать присваиваний событий а функцию одну
document.getElementById("files1").addEventListener("change", function(e){handleFileSelect(e,'list1')},false); ..... document.getElementById("files5").addEventListener("change", function(e){handleFileSelect(e,'list5')},false); //-- function handleFileSelect(evt,list) { var files = evt.target.files; ....... document.getElementById(list).insertBefore(span, null); ....... |
Цитата:
Дело в том что я совершенно не знаком с синтаксисом JS. Для меня совсем ничего не значат ни точки, ни скобки, ни что за чем стоит... HTML я понимаю, а если дело касается JS или PHP то, все, стопор. Вы не могли бы вписать данные переменные в нужные места? Я их тут напишу с нужными переменными - просто копи пасте сдейте пожалуйста)) Вот сам скрипт Код:
<script> Код:
document.getElementById("files").addEventListener("change", function(e){handleFileSelect(e,'list')},false); Код:
//-- |
<style> .thumb { height: 75px; border: 1px solid #000; margin: 10px 5px 0 0; } </style> <input name="fileAttach[]" type="file" id="files1" /><br /> <output id="list1"></output> <input name="fileAttach[]" type="file" id="files2" /><br /> <output id="list2"></output> <input name="fileAttach[]" type="file" id="files3" /><br /> <output id="list3"></output> <input name="fileAttach[]" type="file" id="files4" /><br /> <output id="list4"></output> <input name="fileAttach[]" type="file" id="files4" /><br /> <output id="list5"></output> <script> function handleFileSelect(evt,list) { alert(2);alert(evt);alert(list); var files = evt.target.files; for (var i = 0, f; f = files[i]; i++) { if (!f.type.match('image.*')) { continue; }; var reader = new FileReader(); reader.onload = (function(theFile) { return function(e) { var span = document.createElement('span'); span.innerHTML = ['<img class="thumb" src="', e.target.result,'" title="', escape(theFile.name), '"/>'].join(''); document.getElementById(list).insertBefore(span, null); }; })(f); reader.readAsDataURL(f); } } ; document.getElementById ('files1').addEventListener('change', function(e){handleFileSelect(e,'list1')}, false); document.getElementById('files2').addEventListener('change', function(e){handleFileSelect(e,'list2')}, false); document.getElementById('files3').addEventListener('change', function(e){handleFileSelect(e,'list3')}, false); document.getElementById('files4').addEventListener('change', function(e){handleFileSelect(e,'list4')}, false); document.getElementById('files5').addEventListener('change', function(e){handleFileSelect(e,'list5')}, false); </script> |
вот здесь работает
http://all-html5.narod.ru/3/vrem11.htm |
ОГРОМНОЕ ВАМ СПАСИБО!
|
Часовой пояс GMT +3, время: 19:47. |