Board logo

標題: AJAX 多圖檔上傳範例 (使用 jquery core, jquery form) [打印本頁]

作者: wmh    時間: 2008-8-24 23:06     標題: AJAX 多圖檔上傳範例 (使用 jquery core, jquery form)

2009-05-16 更新為 v1.1 版


[jsg.example]
<style type="text/css">
#upload_block {border: 5px solid #FFB300; width: 550px; height: 260px; position: relative;}
#upload_block h2 {background-color: #FFE097; margin-top: 0;}
#upload_block .info {background-color: #FFE9B7; width: 100%; position: absolute; bottom: 0;}
.JSGImgPreview {float: left; background: url() no-repeat center 50% #FFFAD9; width: 160px; height: 120px; border: solid 1px #0080FF; margin: 0 5px;}
</style>
<div id="upload_block">
  <h2>圖檔上傳測試區,可上傳 4 張圖</h2>
  <div id="preview_block"></div>
  <div style="clear: both;">
    <span id="image_input_block"></span>
  </div>
  <div class="info">
    已上傳完成:<span id="infoIsReady"></span><br/>
    已上傳檔案:<span id="infoFiles"></span><br/>
    <font color="red">PS. 請隨意選取檔案上傳,此範例程式並不會真的處理上傳的圖檔</font>
  </div>
</div>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2/jquery.min.js"></script>  
<script type="text/javascript" src="_lib/jquery/plugins/jquery.form.js"></script>
<script type="text/javascript" src="_lib/jsg/JSG.ImageUploader.js"></script>
<script type="text/javascript">
$j = jQuery.noConflict();
$j(function() {
  myImageUploader1 = new JSG.imgUploader({
    fileLimits: 4,
    actionUrl: '_lib/jsg/demo_upload.php',
    inputContainer: 'image_input_block',
    previewContainer: 'preview_block',
    loadingIcon: '_lib/jsg/images/loading_indicator_big.gif',
    deleteIcon: '_lib/jsg/images/icon_delete.gif',
    existImages: '_lib/jsg/images/sample1.jpg,_lib/jsg/images/sample2.jpg'
  });
  setInterval(function() {
    $j('#infoIsReady').html(myImageUploader1.isReady().toString());
    $j('#infoFiles').html(myImageUploader1.getFiles().replace(/_lib\\/jsg\\/images\\//ig, ''));
  }, 200);
});
</script>
[/jsg.example]

[原始檔及範例程式下載]

繁體中文版:JSG.ImageUploader.zh-tw.zip
簡體中文版:JSG.ImageUploader.zh-cn.zip

此外,這個程式用到了 jquery core 和 jquery form:

http://jquery.com/
http://www.malsup.com/jquery/form/

[原理說明]


[實作範例解說]

HTML 的部份:
<style type="text/css">
.JSGImgPreview {
  float: left; background: url() no-repeat center 50% #FFFAD9; 
  width: 160px; height: 120px; border: solid 1px #0080FF; margin: 0 5px;
}
</style>
<div id="upload_block">
  <h2>圖檔上傳測試區,可上傳 4 張圖</h2>
  <div id="preview_block"></div>
  <div style="clear: both;">
    <span id="image_input_block"></span>
  </div>
</div>


引用 JavaScript:
<script type="text/javascript" src="jquery-1.2.6.pack.js"></script>
<script type="text/javascript" src="jquery.form.js"></script>
<script type="text/javascript" src="JSG.ImageUploader.js"></script>
共三個檔案,jquery core、jquery form 以及 JSG.ImageUploader.js

JavaScript 的部份如下:
$(function() {
  myImageUploader1 = new JSG.imgUploader({
    fileLimits: 4, 
    actionUrl: 'demo_upload.php', 
    inputContainer: 'image_input_block', 
    previewContainer: 'preview_block',
    existImages: '_lib/jsg/images/sample1.jpg,_lib/jsg/images/sample2.jpg'
  });
});
client 端的程式相當簡單,在 DOM Ready 事件內透過 new JSG.imgUploader() 建立上傳檔案的 UI,需傳入的必要參數為:



此外,還有其他額外的參數可以設定,請直接看以下的程式及相關說明:
var defConfig = {
  fileLimits: 1,                  //圖檔數量的限制 (-1 是不限制)
  actionUrl: null,                //圖檔上傳的處理程式
  fileInputName: 'myfile',        //檔案輸入框的名稱
  inputContainer: null,           //檔案輸入框的放置位置
  previewContainer: null,         //預覽圖檔的放置位置
  hideInputIfReachLimits: true,   //達到檔案數量限制時是否隱藏輸入框,若否,則採用 disable
  confirmDeleteMsg: '確認刪除?',
  previewClass: 'JSGImgPreview',
  elementPrefix: 'JSGImgUploader',
  loadingIcon: 'images/loading_indicator_big.gif',
  deleteIcon: 'images/icon_delete.gif',
  outputDelimiter: ',',           //1.1版後改為半形逗號
  existImages: '',                //1.1版後新增,可以放預設圖檔(已存在伺服器的圖檔)
  uniqueId: null
};
至於 Server 端的程式(demo_upload.php),則要處理上傳檔案,可能需要判斷檔案大小、先以暫存目錄存放,並處理縮圖等等。處理完成後以 JSON 格式回傳結果,若成功則回傳檔名,若失敗則回傳錯誤訊息,以下是 Server 端的回傳範例:
<?php
/*
 * 這個檔案需處理上傳並且回傳訊息給 client 端
 * 1. 成功時回傳檔名,格式如下:
 *    {'success': 'filename.jpg'}
 * 2. 失敗時回傳錯誤訊息:
 *    {'error': 'error message'}
 */

//隨機回傳成功或失敗
if (mt_rand(1, 3) != 1) {
  //成功時回傳處理過後的檔名
  $random = rand(1, 5);
  $rtn = array('success' => 'images/sample'. $random .'.jpg');
} else {
  //失敗時回傳錯誤訊息
  $rtn = array('error' => 'upload file too big or something!');
}
echo json_encode($rtn);
?>
最後,當整個表單要送出前,需要先判斷是否仍有檔案上傳中,可透過 myImageUploader1.isReady() 來判斷是否檔案已傳送完畢:
alert(myImageUploader1.isReady());
若檔案已傳送完畢,可再透過 myImageUploader1.getFiles() 取得已上傳成功的檔案名稱,若有多個檔案,則預設以逗號 , 相隔。
alert(myImageUploader1.getFiles());
至於上傳後,Server 端需要再有機制來驗證並處理先前上傳的暫存檔等等,這部份的實作就要看實際運用的情況,不包含在本範例中,請大家自己玩玩囉。
作者: btons    時間: 2009-5-15 12:13

那請問,如果有預設值的話,就是從server端取出檔名,那我該怎麼做才能把檔名和圖片弄進去?
作者: wmh    時間: 2009-5-15 12:38

不好意思,目前這個版本有點舊了,沒有提供預設值的功能,我晚一點把新版本放上來。
作者: darklit    時間: 2009-5-15 17:16     標題: 回復 2# 的帖子

fileInputName: 'myfile' <---這是預設的
接收就用$_FILES['myfile'] 變數
不知道您是不是問這個?
作者: wmh    時間: 2009-5-16 00:14

版本升級為 v1.1 了,多了一個參數 existImages 可以設定預設的圖檔,多個圖檔則以半形逗號分隔。

回覆 darklit :
btons 指的應該是當資料編輯時,Server 端已存在之前上傳的圖檔,這時應該要先顯示出來。
作者: sunuser86    時間: 2009-5-26 17:00

此範例說明的不清不楚,伺服器端接收的DEMO程式簡直是開玩笑
作者: xbook    時間: 2009-10-7 21:01

這個範例很經典,以前要做到動態上傳,需要動很大的手腳
不然就是以flash來代替。
個人覺得,這篇的重點是在jQuery的應用,並不是在PHP等
後端程式的操作。
所以範例中,並沒有真正去處理檔案的接收,僅以簡單的回
傳結果代替。
作者: e20001310    時間: 2009-10-8 04:00     標題: 有點卡關...

我想..上傳我是解決了..
可是刪除檔案呢ˊˋ?
上面X的部分可以內含傳送質嗎??
現在有點卡到...狀況是...選擇圖片>>上傳>>圖片進資料夾OK!!
                                          刪除圖片>>在使用者介面上..是刪除了...可是...資料夾裡面的圖片還在ˊˋ
...請問他能附加另外一之程式在裡面嗎??例如在哪邊加入...actionUrl:??

這支程式很庫@@!
這兩天番遍了大小網站...
只有他沒有用FLASH@@!

感謝版大的無私分享這程式...不然我擠破頭都想不出來....
作者: wmh    時間: 2009-10-8 09:24     標題: 回復 8# 的帖子

關於刪除圖片的部份,可以這樣做:
選擇圖片>>上傳>>圖片進資料夾>>圖檔檔名也儲存下來(A.JPG,B.JPG)
刪除圖片>>送出時將 myImageUploader1.getFiles() 的值一併送出>>server 端比對剩下的檔案即可得知哪些是刪除的
作者: e20001310    時間: 2009-10-8 17:51

我現在將...上傳圖片的檔名轉成JSON
那刪除的時候是將JSON檔名叫出來嘛??
那我該在哪邊加入myImageUploader1.getFiles() ??
是在JSG.ImageUploader.js的var $deleteIcon.click(function()裡面ㄇ??
麻煩版大幫我解題了....
我是自學的所以JAVA很差ˊˋ

辛苦了ˊˋ...
作者: wmh    時間: 2009-10-8 21:01     標題: 回復 10# 的帖子

得看你的實做流程喔。這個範例在我原本的想法中,只是一個表單內負責圖片的一小部份,會在原本的表單送出前,先將 myImageUploader1.getFiles() 存放到一個 hidden 的欄位後送出。

如果你單純用這個程式來上傳圖片的話,得再想想在哪個時機把 myImageUploader1.getFiles() 的資料送到 server 端比較適合。
作者: e20001310    時間: 2009-10-8 21:59

那版大的設計應該是屬於
檔案選擇>>圖片>>資料夾>>傳送json
刪除檔案>>取消瀏覽>>傳送json並且在裡面副加刪除檔案的程式
是這樣嗎 ...
那我可以在x<<裡面附加 hidden 的欄位然後再按下他之後傳送到後端並重新更新json嗎???
因為我在想版大當初設計時應該在x<裡面附加了些什麼...讓使用者按下後圖片會消失@@
整理一下.....

可以請問版大x所傳送的值是哪一個變數?還是標籤??(抱歉我不太懂..那應該叫啥..ˊˋ)
感謝版大...ˊˋ
作者: wmh    時間: 2009-10-9 13:19

不是喔,我原始的設計是個 library 的形式給其他人套用,你不用修改到我提供的 JavaScript,所以不需要瞭解內部運作流程,也不用修改 X 的按鈕的動作。

這個 library 會協助你作圖檔的上傳,並且提供你訊息說 UI 的操作後有哪些檔案,你在最後整個表單送出時,同時將這個訊息送到 server 端處理即可。

我想你可能會需要另一個按鈕,讓 user 做「完成編輯」這樣的動作,在這個按鈕按下後再將訊息送到 server 端。
作者: e20001310    時間: 2009-10-10 18:40

又有問題了...ˊˋ
如何將myImageUploader1.getFiles() 的值放進hidden 欄位@@?
那我現在就變成
選擇檔案>>檔案存入資料夾(先將檔案複製到資料夾內)
確認檔案>>送出myImageUploader1.getFiles()的值在去比對如果值裡面沒有那個檔案就將檔案刪除?
流程應該是這樣嗎??

麻煩版大幫我解迷了ˊˋ!!
作者: wmh    時間: 2009-10-11 11:24

你可以在表單送出前在 onsubmit 事件內去做
<form onsubmit="return checkForm(this)">
<input type="hidden" name="pics" />
function checkForm(fm) {
  fm.elements['pics'].value = myImageUploader1.getFiles();
  //其他表單檢查...
}

作者: itgod    時間: 2009-11-24 22:14

您好,

請問
我上傳都很順利,這是很好用的一個東西
但我如果在同個後端程式中縮圖
前端的預覽圖及無法顯示,且狀態一直是上傳中...

我試著調整縮圖程式的位置
不管是在$_FILES['myfile']['tmp_name']占暫存檔時先縮好
或是在移動好圖檔後再縮
資料夾都可看到縮好的圖片
但我遇到的情況依然存在...

我再試 GD縮或easyphpthumbnail.class縮
情況依然存在

所以縮圖是沒問題的
但這情況確時是因縮圖而引起的
請問有沒有解決之道呢?

謝謝
作者: wmh    時間: 2009-11-25 10:21

請用 client 端開發工具檢查 server 回應的格式是否正確。

正確的回應應該是一組 JSON 的字串如下:
echo json_encode(array('success' => 'http://example.com/img/xxx.jpg'));

作者: itgod    時間: 2009-11-25 19:28

請問你指定client端的開發工具是指哪些?

我想簡單的判斷就知道格式是不正確的
做個小驗證
我把json_encode就指向一張固定存在的圖
且都放在後端程式的底部echo
echo json_encode(array('success' => "http://l.yimg.com/fr/ng/ta/autonet/20081126/16/1417054021.jpg"));

用firebug來看
未縮圖時 上傳
不管傳何圖 在那預覽圖容器中的bg img都會顯示這張圖 這是預期中的

而進行縮圖時
不管我怎麼縮 都不關這張圖的事 應該都還是會顯示遠端的這張圖
但該容器中卻一直是loading.gif...

底部要傳送的東西都一樣
echo json_encode(array('success' => "http://l.yimg.com/fr/ng/ta/autonet/20081126/16/1417054021.jpg"));

請問你有遇過這個問題嗎?
作者: wmh    時間: 2009-11-25 22:10

如果有安裝 firebug,可以看看由  server 回傳的結果是否為正確的 json 格式,如下圖:



或是直接逐行偵錯,也可以看到哪裡出了問題。

很可能是 server 端有回應其他錯誤訊息,導致整個格式錯誤了。
作者: itgod    時間: 2009-11-26 01:25

謝謝你的耐心協助

後來發現原來是縮圖中用了header
產生了錯誤
所以才會看不到返回錯的訊息
但圖也縮成功
作者: donben    時間: 2009-12-1 16:56

這就可以啦!選擇圖片>>上傳>>圖片進資料夾>>圖檔檔名也儲存下來(A.JPG,B.JPG)
刪除圖片>>送出時將 myImageUploader1.getFiles() 的值一併送出>>server 端
網站seoseo行銷seo排名卡債債務更生負債整合前置協商債務協商外拍模特兒金錢豹DIY保養品酒店兼職香腸禮盒辦公室裝潢店面裝潢豪宅裝潢
作者: rfy1119    時間: 2010-3-18 10:12

您好:
目前預覽圖的大小都是固定的
想請問一下有辦法依上傳圖檔的大小變標預覽圖的大小嗎
謝謝
作者: wmh    時間: 2010-3-18 23:17

可以啊,縮圖是 server 端自行實做的。
作者: sfreedom    時間: 2010-4-1 13:11

請問,如果要在預覽小圖,點X的時候,就實際刪除檔案,而不是等送出表單再作的話,請問要怎麼下手?
作者: wmh    時間: 2010-4-3 10:02

回復 24# sfreedom

這和原本設計的流程不一樣喔,如果真要這麼做,不太適合用這隻程式,會改很多,或需要重寫。
作者: sfreedom    時間: 2010-4-9 21:37

謝謝您的回覆~
我想,刪檔,就先放一邊吧 ^^

另外,實際使用上,發現有個問題:
我預設是使用三張圖片,但時常送出表單後,第三張圖片是空的(也就是陣列的第三個元素沒有內容),可是,實際圖片確實都有上傳了,也在伺服器都看到了。
換句話說,不管設定使用者可以上傳幾張,預覽都會正常,可是上傳的最後一張圖片的接收陣列,只要滑鼠沒滑過圖片,就時常會是空的....
不知道這是為什麼?

謝謝耐心的觀看問題 ^^
作者: wmh    時間: 2010-4-9 22:23

如果在 client 端先把 myImageUploader1.getFiles() 的值 alert 出來看看呢?
作者: sfreedom    時間: 2010-4-10 01:48

表單送出前,圖片上傳,預覽都沒問題,照您說的,在client端用 alert 看 myImageUploader1.getFiles() 的值,也都正確:
<input type="button" value="ALERT" onclick="var tt=myImageUploader1.getFiles();alert(tt);">
因為 myImageUploader1.getFiles() 我是寫到 pics_name[] 裡面,所以表單接收頁的程式:
$pics_name = explode(",",$_POST['pics_name']); //圖片的檔
<div align="center"><img src=<? echo $pics_name[0]; ?> /> &nbsp; <img src=<? echo $pics_name[1]; ?> /> &nbsp; <img src=<? echo $pics_name[2]; ?> /></div>
但送出表單後,$pics_name[2] 的值,也就是第三張圖(最後一張圖),經常都是空值,現在發現,必須送出表單前,滑鼠要移過第三張(或是最後一張)預覽圖後,表單接受頁的 $pics_name[2] 才會有值.

謝謝大大回覆得如此迅速!
作者: wmh    時間: 2010-4-10 11:51

嗯,我猜是你把 myImageUploader1.getFiles() 值寫到 pics_name[] 裡的問題,可以朝這部份檢查看看程式流程。
作者: sfreedom    時間: 2010-4-10 12:38

謝謝大大回覆~

我發現我是如此取值的:
<div id="upload_block" onmouseout="return( sendPicName(form_mwo,'pics_name') );">
        <div id="preview_block"></div>
                <div style="clear: both;"><span id="image_input_block"></span></div>
而sendPicName這隻副程式:
/*取得上傳的圖案檔名*/
function sendPicName(fm,el_name) {   
  document.getElementById(el_name).value = myImageUploader1.getFiles();
} 
因為使用的是onmouseout來判斷,難怪會出現這樣的問題,是吧?
不知道,大大有何判讀的建議?似乎 onmouseout 或 onmousemove 都有相同問題:滑鼠必須滑過預覽圖,才能正確取值...
作者: sfreedom    時間: 2010-4-10 13:27

小弟不才,想說,使用者一定會將滑鼠移動到按鈕處(不管他要預覽或真的送出表單),於是,將取值判斷的動作,放在表單按鈕的那個表格TR之中,試了一下:
  <tr onMouseOver="return( sendPicName('pics_name') )">
    <td colspan="4" align="center">
    <input type="hidden" name="form_action" id="form_action" value="mws">
                <input type="hidden" name="m_type" id="m_type" value="ws">
                <input type="hidden" name="pics_name" id="pics_name">
                <input type="submit" value="填好資料,送出註冊!" onclick="form_mws.action='registeration.php'; form_mws.target='_self';">
                <input type="button" value="註冊資料預覽!" onclick="form_mws.action='preview_regdata.php'; form_mws.target='_blank'; this.form.submit();">
        </td>
  </tr>
結果,居然效果出奇的好耶!好像就不會有取不到值的事情發生了!
果然,一個人想,不如拿出來討論,這樣也會讓自己想的層面變多變廣了 ^^

或是,還有沒有其他更好的方式?請大大教導一下!謝謝。
作者: wmh    時間: 2010-4-10 21:32

嗯,一般的作法是在 form submit 前會做一些欄位檢查,這時候可以順便帶入這個值。
<form onsubmit="return checkForm()">
...
</form>

作者: sfreedom    時間: 2010-4-14 19:49

其實說要檢查表單,我都有檢查...
但是,比方說,最大上傳三張圖,但使用者只要上傳兩張,那我也不能硬要他塞三張阿.. XD

阿對了,如果將程式應用在"編輯資料",也就是說,使用者上傳後,也送出表單了,日後的修改...
原來,放預設圖的欄位:
existImages: ''
請問,這個地方,我要放上使用者之前上傳的圖片的路徑與檔名,請問,該怎樣將值傳進去?
因為,我是用php,但php與javascript是無法互相傳參數的不是嗎?
我可以讀出之前使用者送出表單後的資料,比方說,使用者最後我寫入資料庫的圖片資料欄位,內容是 'user/pic1.jpg,user/pic2.jpg,user/pic3.jpg'
我可以用php+mysql讀到某個陣列裡,比方說是$user_data['pics'],所以$user_data['pics']='user/pic1.jpg,user/pic2.jpg,user/pic3.jpg'
但該如何將
<script type="text/javascript">
$(function() {
  myImageUploader1 = new JSG.imgUploader({
    fileLimits: 3,
    actionUrl: 'store_pic_upload.php',
    inputContainer: 'image_input_block',
    previewContainer: 'preview_block',
    existImages: ''
  });
</script>
變成
<script type="text/javascript">
$(function() {
  myImageUploader1 = new JSG.imgUploader({
    fileLimits: 3,
    actionUrl: 'store_pic_upload.php',
    inputContainer: 'image_input_block',
    previewContainer: 'preview_block',
    existImages: 'user/pic1.jpg,user/pic2.jpg,user/pic3.jpg'
  });
</script>
應該沒辦法直接用下面的方式這樣吧?
existImages: $user_data['pics']  
謝謝大大觀看問題..
作者: wmh    時間: 2010-4-16 00:45

第一個問題就是在欄位檢查「後」,表單送出「前」,再去把你的隱藏欄位做設定即可,例如:
function checkForm() {
  //表單欄位檢查...
  ....

  //檢查至此都 ok,準備送出前先把圖檔列表存到隱藏欄位
  document.getElementById('pics_name').value = myImageUploader1.getFiles();

  //送出
  return true;
}
第二個問題,你可以在用 php 寫入網頁內的 javascript,例如:
<script type="text/javascript">  
$(function() {  
  myImageUploader1 = new JSG.imgUploader({  
    fileLimits: 3,  
    actionUrl: 'store_pic_upload.php',  
    inputContainer: 'image_input_block',  
    previewContainer: 'preview_block',  
    existImages: '<?php echo $user_data['pics']; ?>'
  });  
</script>  
或者是先設定到某個變數:
<script type="text/javascript">  
var existImages = '<?php echo $user_data['pics']; ?>';
...

$(function() {  
  myImageUploader1 = new JSG.imgUploader({  
    fileLimits: 3,  
    actionUrl: 'store_pic_upload.php',  
    inputContainer: 'image_input_block',  
    previewContainer: 'preview_block',  
    existImages:  existImages
  });  
</script>  

作者: _james    時間: 2010-8-18 12:15

可以在client就判斷是何種檔案與檔案大小嗎?
作者: 小煒    時間: 2010-9-6 14:12

本帖最後由 小煒 於 2010-9-6 14:14 編輯

版大您好

小弟下載了範例,但測試上好像是有問題的
新上傳的圖檔會一直顯示上傳中的圖示
並沒有切換為預覽圖
使用Firebug 1.5.4 查看後,JSON的回傳值應該也是正確的(請看附圖連結)
查了兩天原因不得其解,希望版大可以提供協助
謝謝!!
PS:小弟套在自己寫的程式上,上傳圖檔到SERVER是正常,但是預覽圖仍然是不顯示,後來查看版大您提供的範例發現是一樣的情狀

小弟使用的環境為
jquery-1.4.2.min.js
----------->改為版大的 http://ajax.googleapis.com/ajax/libs/jquery/1.2/jquery.min.js 一樣不行
jquery.form.js  (2.4.5版)
----------->改為版大的 2.12版 一樣不行
AppServ 2.5.10


附圖連結 in flickr
http://www.flickr.com/photos/40548502@N02/4963038598/
作者: wmh    時間: 2010-9-6 22:31

嗯,看結果是蠻正常的,試試看 trace 原始碼囉~
作者: jaydarman    時間: 2010-9-22 14:41

如果 想把這個範例 應用到網頁上 該怎麼實做呢?
是要先下載什麼 還是要安裝什麼嗎?
作者: itik1412    時間: 2010-10-5 18:20

版大 您好~  我是使用 DreamWeaver cs4 來編緝網頁的
   請問您的程式要如何套用到DW 上呢
作者: itik1412    時間: 2010-10-6 19:28

版大您好,我是剛學做網頁的新手@@~
   我直接抓下範例做測試,但出現和 小煒 一樣的情況。
      另外 如果要在此範例加上 縮圖的功能要如何做修改呢
     謝謝您耐心看完 問
作者: gg358981849    時間: 2011-1-7 16:59

能不能将demo.php 实例化啊。不要只给个 demo样子啊 。
作者: gg358981849    時間: 2011-1-7 17:19

demo.php  怎么才能接收到 提交的文件名来编写真正的上传程序啊
作者: mailzbl4ck    時間: 2011-1-19 18:41

thanks 4 sharing
作者: vsceo    時間: 2011-3-16 00:58

因为对jQuery不懂,但是有应用到这个,我改回jQuery 1.2.6,我本来的程序提示错误,我用jQuery 1.5.1 套用你的插件又提示Error: Form elements must not be named "submit"错误。


求解,谢谢
作者: wmh    時間: 2011-3-16 13:40

回復 44# vsceo

應該是 form plugin 的問題
早期版本的 form plugin 用了以下的 selector:
$(':input[@name=submit]', form).length
新版的 jQuery 不再使用 @
所以把上面那一行的 @ 拿掉即可。

或是找新版的 form plugin 取代掉也行。
作者: vsceo    時間: 2011-3-17 09:05

本帖最後由 vsceo 於 2011-3-17 09:09 編輯

十分谢谢,已解决。

好像没有上传之前没有检查文档的扩展名?

返回失败信息也不能显示或提示出来。

因为对jquery实在不懂,所以只能假手与人,还请版主帮忙。
作者: esam0102    時間: 2012-5-14 10:43

請問如果要改成支援HTML5的input multiple屬性多檔上傳,要如何修改?
主要是希望能一次就選擇多個檔案,而不是一次選擇一個上傳
我對javascript的知識學習還不夠,所以不太確定如何修改,
目前只有在插入新的input的地方加上multiple屬性,接下來的部分就不知道了
謝謝




歡迎光臨 jsGears.com 技術論壇 - AJAX, JavaScript, jQuery, 網站開發, 前端效能優化 (http://jsgears.com/)