[Javascript] Как проверить, был ли файл выбран в элементе <input type = "file">?


Answers

Как это:

if($('#InputFile').val().length){
//do your stuff
}

Вы можете лучше использовать, используя метод $ .trim (), чтобы не допускать (обрезать) пробелы:

if($.trim($('#InputFile').val()).length){
//do your stuff
}
Question

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

Вот ссылка на bootply

Вот мой html

<div class="upload-block">
    <input type="checkbox">
    <input type="checkbox">
    <input type="checkbox">
    <input type="file" id="InputFile">
    <button id="upload-btn" type="button blue-button" 
            class="btn blue-button" disabled>Submit</button>

</div>

Вот моя стартовая точка javascript: Обновлено через Karl Bind событие change на всех входах, а затем использовать некоторые условия:

  $('.upload-block input').change(function() {
    $('#upload-btn').prop(
        'disabled',
        !($('.upload-block :checked').length && $('#InputFile').val()));
  });

пример

Это работает для всех #InputFile а #InputFile имеет значение, отличное от none. т.е. где был выбран файл. Однако это не работает в IE9

Как я могу обновить это для работы в IE9?




Я бы применил валидацию ко всем задействованным элементам. Таким образом, изменение либо флажков, либо ввод будет отключен

$('#InputFile, .upload-block :checkbox').change(function(){
   var isValid= $('.upload-block :checkbox:checked').length  && $('#InputFile').val();
   $('#upload-btn').prop('disabled',isValid);
});