iT邦幫忙

0

ajax jquery change 事件,第二次的時候沒有反應?

<input type="file" class="editor-upload-video" accept="video/*">
$('.editor-upload-video').change(function() {

console.log('uploading');

$.ajax({
     type: "POST",
     url: "/admin/controllers/update-admin?type=editor-video",
     data: data,
     cache: false,
     contentType: false,
     processData: false,
     success: function(data){
          console.log('uploaded');
        }

第一次有回傳成功
但是第二次按,即便有出現要你選檔案,選完後連 uploading 都沒有顯示,就沒有反應了。。。。怎麼會這樣呢?

Homura iT邦研究生 3 級 ‧ 2018-10-18 09:23:17 檢舉
你該不會是選了同一個檔案?
77012904 iT邦新手 3 級 ‧ 2018-10-18 12:04:35 檢舉
由於不知道你這段是放在哪裡,所以沒辦法告訴你問題點在哪.

最大的可能是change這個事件被unbind了~ 要bind上去的事件,寫在ready裡面或許是個選擇
asys0512 iT邦研究生 5 級 ‧ 2018-10-18 13:46:25 檢舉
Homura :暈倒,真的是同一個檔案的關係。。這有辦法判斷嗎???
1
Homura
iT邦研究生 3 級 ‧ 2018-10-18 14:11:04
最佳解答

選擇同一個檔案沒反應的話
一個方法是改成另外做一顆按鈕按了才上傳
一個是上傳完成後清空檔案

$('.editor-upload-video').change(function () {
    console.log('uploading');
    $.ajax({
        type: "POST",
        url: "/admin/controllers/update-admin?type=editor-video",
        data: data,
        cache: false,
        contentType: false,
        processData: false,
        success: function (data) {
            console.log('uploaded');
            $('.editor-upload-video').val('');           
        }
    });         
});    
0
小魚
iT邦好手 1 級 ‧ 2018-10-17 22:15:56

你用的是套件嗎?
如果是套件有時候會把class改掉,
先確認一下這部分...

0
浩瀚星空
iT邦研究生 4 級 ‧ 2018-10-18 09:33:31

先使用f12大法。檢查第一次運行後,是否有錯誤發生。

一般會出現你說的情況,大約只有以下情況

1.如小魚說的,可能class被修改或是元件被重建了。事件需要重綁才會有動作。

2.程式發生錯誤,造成後續的js停止不運做。

3.無法觸發change事件。如Homura說的,你選了同一支檔案。這樣並不會觸發change事件。

大約就如上的情況了。你再自行檢查看看。

我要發表回答

立即登入回答