У меня есть два входа для загрузки файлов на странице, и я пытаюсь проверить, был ли файл выбран для этих входов. Если выбран файл, запустите код, иначе ничего не сделайте.
Ниже мой код:
<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.
Ваш код настроен на запуск, когда 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 готов).
Рекомендации:
$().on
- https://api.jquery.com/on/Вам понадобится обработчик событий, чтобы проверить, загружено ли что-либо, во время загрузки пользователя, например: проверьте, имеет ли вход значение, когда ввод "изменяется":
<script>
$(function() {
$("#file1").change(function (){
if ($("#file1").val()) {
console.log('file1 uploaded');
}
});
$("#file1").change(function (){
if ($("#file2").val()) {
console.log('file2 uploaded');
}
});
});
</script>
.val()
вернет "" и операторыif
не будут выполнены. Ваш код настроен для запуска, когда DOM готов, и я сомневаюсь, что пользователь выбрал файл к тому времени