Не отправляется форма в ie7/8
К обычной форме есть необходимость прикреплять файл, сам input type file прячется стилями, поэтому вызываю окно выбора файла кликом по ссылке через js:
$('.link').click(function(){ $('.fileInput').click(); // Открываем окно выбора файла }) Кликаем, открываем окно, выбираем файл, всё вроде бы ок, но при сабмите формы в ie7/8, форма не отправляется, ничего не происходит. Но если проделать такой же алгоритм, только выбирая файл не по клику по ссылке, а через родной input type file , то форма отправляется как надо... |
Я проверил у себя в IE 8 и форма нормально отправлялась. Возможно у вас там с обработкой событий какая то путаница ?
На таком коде тестил: <!DOCTYPE HTML> <html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script> </head> <body> <form action="ii.php"> <input type="file" style="display: none;" class="fileInput" /> <span class="link">Select file</span> <input type="submit" value="submit" /> </form> <script> $('.link').click(function() { $('.fileInput').click(); }); </script> </body> </html> |
У меня вот как происходит, жму сабмит формы, при этом очищается значение поля input type file и ничего не происходит, жму сабмит 2-й раз и вот только потом форма отправляется с пустым значением поля input type file, никаких обработчиков больше нет, сломал голову, что в этой элементарной проблеме не так....
|
Мой пример, выше, у вас нормально работает в ИЕ ?
Если да, то покажите код на вашей странице (заранее сократив его, что бы можно было узреть проблему и не отвлекаться на лишнее), или ссылку на страничку |
Если в вашем примере input type file добавить атрибут name, то форма также как у меня не отправляется...
|
мде.. судя по всему, ИЕ не нравится симуляция клика, как вариант могу предложить использовать label:
<!DOCTYPE HTML> <html> <head></head> <body> <form> <label for="myFile">Select File</label> <div style="width: 0px;height: 0px;overflow: hidden;display: inline-block;"> <input type="file" name="myFile" id="myFile" /> </div> <input type="submit" value="submit" /> </form> </body> </html> |
Работает в IE8, но в IE7 не срабатывает label for
|
Хммм, пример выше у меня и в ИЕ 7 тоже работает.
|
Неа, еще раз проверил, в IE7 упорно не работает (забить на IE7 не могу), поэтому в качестве кроссбраузерного решения выбрал способ наложения текста и input type file друг на друга с помощью opacity: 0 и пары мелких трюков, решение было дернуто отсюда http://blueimp.github.com/jQuery-File-Upload/ (см. стили кнопки "Add Files")
P.s. IE7 тестил сперва в IETestere, затем в оригинальной сборке, в обоих случаях результат был одинаковый, затем потестил в IE9 (в режиме IE7) так да, работает, но мне нужна поддержка настоящего IE7 :) |
Часовой пояс GMT +3, время: 07:52. |