Aucune des réponses existantes ne semblait assez compacte pour la simplicité de la demande. La vérification si un champ d'entrée de fichier donné a une extension à partir d'un ensemble peut être effectuée comme suit:
function hasExtension(inputID, exts) {
var fileName = document.getElementById(inputID).value;
return (new RegExp('(' + exts.join('|').replace(/\./g, '\\.') + ')$')).test(fileName);
}
Ainsi, un exemple d'utilisation pourrait être (où upload
est l' id
entrée d'un fichier):
if (!hasExtension('upload', ['.jpg', '.gif', '.png'])) {
}
Ou en tant que plugin jQuery:
$.fn.hasExtension = function(exts) {
return (new RegExp('(' + exts.join('|').replace(/\./g, '\\.') + ')$')).test($(this).val());
}
Exemple d'utilisation:
if (!$('#upload').hasExtension(['.jpg', '.png', '.gif'])) {
}
Le .replace(/\./g, '\\.')
est là pour échapper au point de l'expression rationnelle afin que les extensions de base puissent être passées sans que les points ne correspondent à aucun caractère.
Il n'y a pas de vérification d'erreur sur ceux-ci pour les garder courts, probablement si vous les utilisez, vous vous assurerez d'abord que l'entrée existe et que le tableau d'extensions est valide!