Không có câu trả lời nào trong số các câu trả lời hiện có có vẻ khá nhỏ gọn để đáp ứng yêu cầu đơn giản. Việc kiểm tra xem trường nhập tệp nhất định có phần mở rộng từ một tập hợp hay không có thể được thực hiện như sau:
function hasExtension(inputID, exts) {
var fileName = document.getElementById(inputID).value;
return (new RegExp('(' + exts.join('|').replace(/\./g, '\\.') + ')$')).test(fileName);
}
Vì vậy, ví dụ sử dụng có thể (trong đó upload
là id
của một tập tin đầu vào):
if (!hasExtension('upload', ['.jpg', '.gif', '.png'])) {
}
Hoặc như một plugin jQuery:
$.fn.hasExtension = function(exts) {
return (new RegExp('(' + exts.join('|').replace(/\./g, '\\.') + ')$')).test($(this).val());
}
Ví dụ sử dụng:
if (!$('#upload').hasExtension(['.jpg', '.png', '.gif'])) {
}
Ở .replace(/\./g, '\\.')
đó để thoát khỏi dấu chấm cho regexp để các phần mở rộng cơ bản có thể được chuyển vào mà không có dấu chấm khớp với bất kỳ ký tự nào.
Không có lỗi khi kiểm tra những thứ này để giữ cho chúng ngắn gọn, có lẽ nếu bạn sử dụng chúng, bạn sẽ đảm bảo rằng đầu vào tồn tại trước tiên và mảng mở rộng hợp lệ!