2012-02-07 3 views
1

У меня есть этот HTML кодJquery на выберите файл, отправить форму

<form method="post" id="upload_video" enctype="multipart/form-data" action="/Home/Save">   
      <div id="form_box"> 
        <input type="text" name="name" id="name" value="" style="color: rgb(0, 0, 0);"><br> 
        <input type="text" name="email" id="email" value="" style="color: rgb(0, 0, 0);"><br> 
        <input type="text" name="mobile" id="mobile" value="Κινητό" style="color: rgb(0, 0, 0);"><br> 
        <input type="checkbox" id="checkbox"> 
      </div> 
      <input type="file" name="file" id="upload_file" style="position:absolute;top:-100px;"> 
    </form> 

    <div id="upload"></div> 

и я хочу, нажав #upload DIV затем automaticallu = у выбрать файл, и когда я это сделать, то представить свою форму. Поэтому у меня есть этот скрипт

  $('#upload').click(function() { 
        $('#upload_file').click(); 
      }); 

      $("#upload_file").change(function() { 
       $('#upload_video').submit(); 
      }); 

в $ ('# upload_file'). Нажмите() событие большой во всех браузерах, кроме $ ('# upload_file') работает. Изменение() работает только в FF и Chrome, но не в IE. Таким образом, моя форма представлена ​​только в FF и Chrome ..

Любые идеи?

+0

[Этот ответ] (http://stackoverflow.com/a/2389373/825789) указывает, что это может быть проблема со старыми версиями jquery. Какую версию вы используете? Кроме того, [наиболее ранжированный ответ на тот же вопрос] (http://stackoverflow.com/a/2876677/825789), похоже, обеспечивает обходное решение. – bfavaretto

+0

Возможный дубликат проверить ссылку http://stackoverflow.com/questions/1637503/jquery-change-event-on-select-not-firing-in-ie – Ravia

+0

да, я проверил этот ответ .. Я использую jquery 1.7. 1 – mathew

ответ

1

С этого поста: jQuery change method on input type="file"

это выглядит, как вы, возможно, придется сделать это:

$("#upload_file").live('change', function() { 
       $('#upload_video').submit(); 
      }); 
+0

да, проверил, что тоже .. не повезло – mathew

0

Просто обнаружил, что это не возможно в IE из-за соображений безопасности

0

Mathew - Я «Конечно, вы уже нашли ответ на этот вопрос.

Я не уверен, почему ответ Кори отмечен как ответ, поскольку это не будет работать в хром или более новых версиях IE. Это риск безопасности, поскольку файлы могут быть загружены без согласия пользователя.

Для тех, кто пытается это сделать, у вас есть много вариантов. Есть несколько очень недорогих вариантов для загрузки нескольких файлов (uploadify или plupload - это два, которые я использовал.) Если вам нужно загрузить только один файл, вы можете использовать iframe для загрузки изображения (файл загрузки Google с использованием iframe, есть тонны примеров.) В iframe вам нужно будет вызвать функцию javascript в событии «onload». После загрузки изображения вы можете вернуть json в окно iframe, которое предоставляет статус загрузки (успех/сбой.) В зависимости от того, что вы пытаетесь выполнить, вы можете либо передать свои данные обратно через json, либо вы можете передать URL-адрес перенаправления в json. Надеюсь, это поможет.

~ Cheers !!

Смежные вопросы