2010-07-26 118 views
2

我想按如下方式進行文件大小驗證。請看這個提案方法是否有意義。這部分本身應該工作。使用jQuery表單驗證遠程方法驗證上傳的文件大小

1> After the user selects a file, I check whether the file has suffix as png, gif etc. 
$("#myform").validate({ 
rules: { 
    fieldForUpload: { 
    required: true, 
    accept: "png|gif" 
    } 
} 
}); 

2>然後我想使用aJax方法上傳文件到服務器進行驗證,即使在用戶單擊提交按鈕之前。 http://docs.jquery.com/Plugins/Validation/Methods/remote#url

$("#myform").validate({ 
    rules: { 
    fieldForUpload: { 
     required: true, 
     accept: "png|gif" 
     remote: "check-filesize.php" 
    } 
    } 
}); 

這裏是我的問題:

1>這個方法有效嗎? 換句話說,我可以使用「accept」+「remote」一起驗證fieldUpload嗎?

2>我可以強制先驗證「接受」,然後驗證「遠程」嗎?

3>如何實現這個「遠程」方法? 僅供參考:我知道如何通過使用遠程來驗證數據庫中是否存在電子郵件。 爲了達到這個目的,我必須獲得一些不同的知識嗎?

非常感謝

回答

1

您是否考慮過使用文件上傳部件?正常的表單驗證需要訪問表單域。大多數瀏覽器無法實際操縱文件上傳輸入字段。

退房PluploadSWFUpload,兩個基於Flash的文件上傳控件允許類型和文件大小的限制沒有第一次將文件發送到服務器。

還有Ajax UploadUploadify,這兩個jQuery插件試圖使用現代瀏覽器功能來做同樣的事情。舊版瀏覽器可能沒有相同的支持級別。

+0

你好查爾斯, 如果我使用Ajax上傳,怎麼辦呢在jQuery驗證插件中將它與遠程連接起來? 謝謝 – a2011 2010-07-26 19:35:22

+0

你不需要。該插件提供了自己的驗證規則。 (另外,正常的文件輸入在JavaScript中很難使用,所以驗證插件很可能無法正常工作......) – Charles 2010-07-26 20:51:50

+0

Hello Charles, 對於表單驗證,我使用jQuery Form Validation Plugin。然後,爲了上傳文件,我只使用一個PHP腳本。現在,對於Ajax上傳,我如何使用它符合我的要求。 謝謝 – a2011 2010-07-27 01:51:37

5

如果你想使用jQuery的validate,你可以通過創建這個方法:

$.validator.addMethod('filesize', function(value, element, param) { 
    // param = size (en bytes) 
    // element = element to validate (<input>) 
    // value = value of the element (file name) 
    return this.optional(element) || (element.files[0].size <= param) 
}); 

你會使用它:

$('#formid').validate({ 
    rules: { inputimage: { required: true, accept: "png|jpe?g|gif", filesize: 1048576 } 
    messages: { inputimage: "File must be JPG, GIF or PNG, less than 1MB" } 
}); 
+0

這不適用於IE :( – aslamdoctor 2012-03-22 16:10:23