Как вы устанавливаете ввод файлов на JavaScript или HTML? - PullRequest
0 голосов
/ 27 августа 2009

На разрабатываемом мной сайте есть файл ввода, с которого пользователи могут загружать файлы. Он использует «Ajax» (не совсем) для отправки файла в файл php, связанный с iframe. Мой вопрос заключается в том, что Firefox автоматически заполняет элемент ввода файла. Есть ли способ, которым я могу дать пользователям возможность нажать кнопку отправки, не отправляя файл? Или я должен установить значение файла в null как-то и проверить это в файле php? Мой код выглядит так:

    Name: <input type='text' id='name'><br>
    Description: <textarea id='description' rows=10 columns=100></textarea><br>
    <form id="upload_form" method="post" enctype="multipart/form-data" action="uploadfile.php">
    <input type='hidden' value='' id='descriptionid' name='descriptionid'>
    <input type='file' name="file" id="file" size="27" value="">
    <input type='submit' value='Submit' onclick=';' id='submitPopup'>
    </form>

Когда кнопка нажата, она запускает метод JavaScript и получает значения имени и описания, а также отправляет форму ввода. Как разрешить пользователям загружать файл, а не загружать его автоматически в браузере?

Ответы [ 3 ]

3 голосов
/ 27 августа 2009

В качестве меры безопасности чтение или установка значения поля ввода file не допускаются. Однако, если вы позвоните form.reset(), это прояснит для вас.

Вы можете даже просмотреть все остальные входы, запомнить их значение, сбросить форму и затем заполнить другие входы, чтобы очистить только file.

0 голосов
/ 07 июля 2014

Я ответил на этот вопрос в другой теме: Как очистить ввод файла с помощью JavaScript?

Существует 3 способа очистки ввода файла с помощью JavaScript:

  1. установить для свойства значение пустое или нулевое.

    Работает для IE11 + и других современных браузеров.

  2. Создайте новый элемент ввода файла и замените старый.

    Недостатком является то, что вы потеряете прослушиватели событий и свойства расширения.

  3. Сброс формы владельца с помощью метода form.reset ().

    Чтобы не влиять на другие элементы ввода в той же форме владельца, мы можем создать новую пустую форму, добавить элемент ввода файла в эту новую форму и сбросить его. Этот способ работает для всех браузеров.

Я написал функцию javascript. демо: http://jsbin.com/muhipoye/1/

function clearInputFile(f){
    if(f.value){
        try{
            f.value = ''; //for IE11, latest Chrome/Firefox/Opera...
        }catch(err){
        }
        if(f.value){ //for IE5 ~ IE10
            var form = document.createElement('form'), ref = f.nextSibling;
            form.appendChild(f);
            form.reset();
            ref.parentNode.insertBefore(f,ref);
        }
    }
}
0 голосов
/ 27 августа 2009

В целях безопасности нельзя вводить данные вручную или с помощью JavaScript в файл типа ввода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...