Функция запуска на основе состояния ввода файла

0

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

Ниже мой код:

<input id="file1" type="file" class="file1" />
<input id="file2" type="file" class="file2" />

<button class="upload radius small">Upload</button>

$(function() {
  if ($("#file1").val()) { 
    //Run code if file input is selected. Otherwise do nothing...   
  }
  if ($("#file2").val()) { 
    //Run code if file input is selected. Otherwise do nothing...   
  }
});

Когда я пытаюсь выполнить вышеуказанный код, он не работает. Ошибок не возникает, это просто не работает. Как исправить проблему?

Примечание. Я использую jQuery 2.1.

  • 0
    Ну, поскольку ваш JavaScript, скорее всего, выполняется до того, как будут выбраны какие-либо файлы, .val() вернет "" и операторы if не будут выполнены. Ваш код настроен для запуска, когда DOM готов, и я сомневаюсь, что пользователь выбрал файл к тому времени
  • 0
    Когда вы хотите, чтобы ваш код работал? После того, как файл выбран? После нажатия кнопки?
Показать ещё 3 комментария
Теги:
file-io

2 ответа

2
Лучший ответ

Ваш код настроен на запуск, когда DOM готов (обозначается путем обертывания $(function() {/* CODE */});), и я сомневаюсь, что пользователь уже выбрал файл. Кажется, что вы хотите запустить свой код при нажатии кнопки загрузки. Это означает, что вам нужно связать событие click для него. Что-то вроде этого:

$(function() {
    $("button.upload").on("click", function () {
        if ($("#file1").val()) { 
            console.log("File 1 set"); 
        }
        if ($("#file2").val()) { 
            console.log("File 2 set"); 
        }
    });
});

ДЕМО: http://jsfiddle.net/PsZNY/

Я оставил $(function() {}); чтобы гарантировать, что кнопка загрузки может быть найдена jQuery (когда DOM готов).


Рекомендации:

0

Вам понадобится обработчик событий, чтобы проверить, загружено ли что-либо, во время загрузки пользователя, например: проверьте, имеет ли вход значение, когда ввод "изменяется":

<script>
$(function() {
    $("#file1").change(function (){
      if ($("#file1").val()) { 
        console.log('file1 uploaded');
      }
    });
    $("#file1").change(function (){
      if ($("#file2").val()) { 
        console.log('file2 uploaded');
      }
    });
});
</script>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню