Nessuna delle risposte esistenti sembrava abbastanza compatta per la semplicità della richiesta. Il controllo se un determinato campo di input del file ha un'estensione da un set può essere eseguito come segue:
function hasExtension(inputID, exts) {
var fileName = document.getElementById(inputID).value;
return (new RegExp('(' + exts.join('|').replace(/\./g, '\\.') + ')$')).test(fileName);
}
Quindi l'utilizzo di esempio potrebbe essere (dov'è upload
l' id
input di un file):
if (!hasExtension('upload', ['.jpg', '.gif', '.png'])) {
}
O come plugin jQuery:
$.fn.hasExtension = function(exts) {
return (new RegExp('(' + exts.join('|').replace(/\./g, '\\.') + ')$')).test($(this).val());
}
Utilizzo di esempio:
if (!$('#upload').hasExtension(['.jpg', '.png', '.gif'])) {
}
L' .replace(/\./g, '\\.')
è lì per sfuggire il punto per l'espressione regolare in modo che le estensioni di base possono essere passati in senza i punti corrispondenti a qualsiasi carattere.
Non ci sono errori su questi per mantenerli brevi, presumibilmente se li usi ti assicurerai che l'input esista prima e che l'array delle estensioni sia valido!