сохраняйте диалоговое окно файла открытым даже после отображения предупреждения

#javascript #jquery

#javascript #jquery

Вопрос:

ПРИВЕТ, ребята,

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

Пожалуйста, сообщите.
Также есть ли какой-либо способ, с помощью которого я могу применить фильтр непосредственно к файловому диалогу, чтобы выбирать только .csv файлы, используя jquery / javascript?

 Element.find('input.hiddenFileInputFile').change(function () 
{
            var filename = $(this).val();
            if (!/.csv$/.test(filename)) {
                alert('Please select a csv file');
                return false;
            }
});
  

Спасибо.

Ответ №1:

Просто вызовите его click событие после предупреждения:

 if (!/.csv$/.test(filename)) {
   alert('Please select a csv file');
   $(this).click();
   return false;
}
  

Это не позволит «сохранить его открытым», что невозможно, но повторно откроет его, когда файл недействителен.

Ответ №2:

К сожалению, вы не можете вызвать событие щелчка при вводе файла извне по соображениям безопасности. Однако, если вы хотите ограничить пользователя на стороне клиента, вы можете попробовать:

 <input type="file" accept="text/csv" /> 
  

Это сделает файлы типа .csv видимыми только в диалоговом окне «открыть файл». Однако я бы также разместил элемент управления на стороне сервера. Если указан неправильный тип, вы можете открыть диалоговое окно предупреждения и соответствующим образом оформить ввод файла (например, красной рамкой) и позволить пользователю открыть диалоговое окно файла, потому что у вас нет никакого способа вызвать это.

Некоторые плагины для jquery предоставляют способы, которые дают вам полный контроль над процессом загрузки.

Плагин Jquery 1,
uploadify jquery

и это лишь некоторые из них.

Надеюсь, это поможет.