2013-07-07 3 views
4

У меня есть следующий код для отправки формы и вызова скрипта PHP.Отправить кнопку нужно дважды щелкнуть по IE ​​

<script> 
function handleBrowse() 
{  
    $('#uploadedfile').click(); 
} 

function displayFilePath(obj) 
{ 
    document.getElementById('dummyFilePath').innerHTML = obj.value; 
} 
</script> 


    <div id="dummyFilePath" class="dummyFilePath"></div> 
    <input type="button" value="Browse" onclick="handleBrowse();"/> 

    <form enctype="multipart/form-data" action="../php/uploader.php" method="POST" target="myiframe"> 
     <input type="file" id="uploadedfile" name="uploadedfile" onchange="displayFilePath(this)" style="display:none"/>   
     <input type="submit" value="Upload File" /> 
    </form> 

    <iframe name="myiframe" id="myiframe" src="" width=1 height=1 style="visibility:hidden;position:absolute;bottom:2px;"></iframe> 

В Firefox мне нужно было нажать только один раз, чтобы отправить его. Но в IE мне нужно дважды щелкнуть!

Не могли бы вы объяснить мне, почему?

Пожалуйста, запустите this jsFiddle на IE, чтобы увидеть проблему. Вы можете четко видеть, что, как только вы просматриваете файл для загрузки, если вы не дважды нажмете кнопку файла загрузки, действие формы не будет работать.

PS: проблема двойного щелчка в IE может быть решена, как предложено в ответе ниже, но это приведет к тому, что загруженный файл никогда не достигнет своего пункта назначения (uploader.php); Только его имя будет

+0

Не уверен, что это основная причина вашей проблемы, но вам нужно закрыть знак элемента: '' – sdespont

+0

И , поскольку вы используете JQuery, 'document.getElementById ('dummyFilePath'). innerHTML = obj.value;' равно '$ ('dummyFilePath') .html (obj.value);'. Также избегайте встроенного JS для объявления события, такого как onClick. – sdespont

+0

Попробуйте добавить событие отправки в свою форму с помощью JQuery http://api.jquery.com/submit/, затем добавьте окно предупреждения в обратный вызов и проверьте, отображается ли предупреждение в первый раз с IE. Также проверьте консоль на ошибку (F12) – sdespont

ответ

2

обновление вашей функции как этот

function handleBrowse() 
{ 
    $('#uploadedfile').click(); 
    $('#uploadedfile').detach(); 
} 

надеюсь, что это помогает вам.

+0

detach разрешил проблему двойного щелчка, но вызвал форму uploader.php, чтобы не получить фактический файл (посмотрите пример, опубликованный в вопросе). – Kam

+0

сценарий получил только имя файла. как-то detach() очистил файл от формы – Kam

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