ไม่มีคำตอบใดที่ดูกระชับเพียงพอสำหรับความเรียบง่ายของคำขอ การตรวจสอบว่าช่องป้อนไฟล์ที่ระบุมีนามสกุลจากชุดสามารถทำได้ดังนี้:
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, '\\.')
จะมีการหลบหนีจุดสำหรับ regexp เพื่อให้ส่วนขยายพื้นฐานสามารถผ่านได้โดยไม่ต้องจุดที่ตรงกับตัวอักษรใด ๆ
ไม่มีข้อผิดพลาดในการตรวจสอบสิ่งเหล่านี้เพื่อให้สั้นสันนิษฐานว่าหากคุณใช้มันคุณจะต้องแน่ใจว่าอินพุตมีอยู่ก่อนและอาร์เรย์ส่วนขยายนั้นถูกต้อง!