2014-02-15 72 views
1

我有一個HTML表單與文件上傳選項,我在客戶端(爲了只允許某些文件擴展名)的文件格式快速驗證。替代IF語句與多個OR

以下代碼片段對我來說工作正常,但我想知道是否有更好或更快的方式來實現相同的,特別是。如果將來有更多的擴展被允許的話。

注意:這只是關於用多個OR語句檢查文件擴展名的部分。

到目前爲止我的代碼(工作):

if(((fileNameShort.length <= 100) && (fileNameShort.indexOf('#') == -1)) && ((fileFormat == 'bmp') || (fileFormat == 'doc') || (fileFormat == 'docx') || (fileFormat == 'gif') || (fileFormat == 'jpeg') || (fileFormat == 'jpg') || (fileFormat == 'msg') || (fileFormat == 'png') || (fileFormat == 'pdf'))) 

有這方面的建議,蒂姆非常感謝。

回答

5

使用.indexOf()

,還可以使用.toLowerCase()如檢查小寫的文件格式

var arr=['bmp','doc','docx','gif','jpg','msg']; //create array filetypes 

if(fileNameShort.length <= 100 && fileNameShort.indexOf('#') === -1 && arr.indexOf(fileFormat.toLowerCase()) !== -1) 
+1

這是完美的 - 非常感謝您的快速回復。一旦可用,我會接受。 – user2571510

+0

@ user2571510歡迎高興它:) –

3

您正在使用方式也可能括號。

if ( 
    ( 
    (fileNameShort.length <= 100) 
    && (fileNameShort.indexOf('#') == -1) 
) 
    && 
    ( 
    (fileFormat == 'bmp') || (fileFormat == 'doc') || (fileFormat == 'docx') || (fileFormat == 'gif') || (fileFormat == 'jpeg') || (fileFormat == 'jpg') || (fileFormat == 'msg') || (fileFormat == 'png') || (fileFormat == 'pdf') 
) 
) 

相當於

if ( 
    fileNameShort.length <= 100 
    && fileNameShort.indexOf('#') == -1 
    && ( 
    fileFormat == 'bmp' || fileFormat == 'doc' || fileFormat == 'docx' || fileFormat == 'gif' || fileFormat == 'jpeg' || fileFormat == 'jpg' || fileFormat == 'msg' || fileFormat == 'png' || fileFormat == 'pdf' 
) 
) 

相當於

if ( 
    fileNameShort.length <= 100 
    && fileNameShort.indexOf('#') == -1 
    && /^(bmp|docx?|gif|jpe?g|msg|png|pdf)$/i.test(fileFormat) 
) 
+0

謝謝,這也是非常有用的! – user2571510