मौजूदा जवाबों में से कोई भी अनुरोध की सादगी के लिए काफी कॉम्पैक्ट नहीं लग रहा था। यह जाँच करना कि क्या किसी दिए गए फ़ाइल इनपुट फ़ील्ड में एक सेट से एक एक्सटेंशन है, इस प्रकार पूरा किया जा सकता है:
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 के लिए डॉट वहाँ से बचने के लिए इतना है कि बुनियादी एक्सटेंशन किसी भी चरित्र से मेल खाते डॉट्स के बिना में पारित किया जा सकता है।
इनको छोटा रखने के लिए इन पर जाँच करने में कोई त्रुटि नहीं है, संभवतः यदि आप इनका उपयोग करते हैं तो आप सुनिश्चित करेंगे कि इनपुट पहले मौजूद है और एक्सटेंशन सरणी मान्य है!