Ни один из существующих ответов не казался достаточно компактным для простоты запроса. Проверить, имеет ли данное поле ввода файла расширение из набора, можно выполнить следующим образом:
function hasExtension(inputID, exts) {
var fileName = document.getElementById(inputID).value;
return (new RegExp('(' + exts.join('|').replace(/\./g, '\\.') + ')$')).test(fileName);
}
Так пример использования может быть (где upload
это id
из входного файла):
if (!hasExtension('upload', ['.jpg', '.gif', '.png'])) {
}
Или как плагин jQuery:
$.fn.hasExtension = function(exts) {
return (new RegExp('(' + exts.join('|').replace(/\./g, '\\.') + ')$')).test($(this).val());
}
Пример использования:
if (!$('#upload').hasExtension(['.jpg', '.png', '.gif'])) {
}
Это .replace(/\./g, '\\.')
нужно для экранирования точки для регулярного выражения, чтобы можно было передавать базовые расширения без точек, соответствующих любому символу.
В них нет проверки ошибок, чтобы они оставались короткими, предположительно, если вы их используете, вы сначала убедитесь, что ввод существует, а массив расширений действителен!