2011-12-01 56 views
3

我目前有一個讓用戶選擇圖像的表單。圖片被選中後,他們需要點擊提交按鈕。選擇要上傳的圖像文件後,可以觸發表單操作嗎?

$('#image_form').ajaxForm(function(data) { 
    // do some stuff 
}); 

這裏是HTML:

<form id="image_form" enctype="multipart/form-data" action="load_photo.php" method="post" > 
    <input type="hidden" name="MAX_FILE_SIZE" value="8000000" /> 

    <table>  
     <tr> 
      <td> 
       <label for="mapimage">Select an image:</label> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <input name="file" type="file" id="file"/> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <input type="submit" value="Update" name="update_photo" id="update_photo"/> 
      </td> 
     </tr> 
    </table> 
</form> 

是否有可能觸發這種形式操作的用戶已經瀏覽到的照片,經過這麼通話結束這樣看我使用jQuery選中它?理想情況下,他們不必點擊提交按鈕。

回答

5

當一個文件被選中時,change事件在input[type=file]元素上觸發,所以只要聽取它。

$('#file').change(function(e){ 
    // do something after a file is selected 
    // maybe submit the file? 
    e.target.form.submit(); 
}); 
0

正如上面說可以綁定change事件,但你無法檢測他們已經選擇了哪個文件或在某些瀏覽器咳嗽舊的IE的這個文件的連名字我相信咳嗽

你可以做什麼來獲取文件($("#fileinput").val())的名稱,然後解析字符串在最後期限:

// on change 
{ 
    var fileParts = $("#fileinput").val().split("."); 
    var extension = fileParts[fileParts.length - 1]; 
    var validFileExt = new Array("jpg", "jpeg", "bmp", "png", "gif"); 
    var isImage = jQuery.inArray(extension, validFileExt); 
    if (isImage){ 
     // submit 
    } 
} 

BTW我只是做了該代碼,以便DBL檢查

當然你還是需要爲這些瀏覽器提供一個傳統的按鈕。

此外,這不是有效的文件驗證;)

相關問題