1

我無法在更改輸入時觸發表單提交。我想我需要處理事件,但我從來沒有真正知道那是什麼。綁定jQuery更改函數以提交功能

這裏是我的HTML:

<form action="/upload"> 
    <input type="file" name="file"> 
</form> 

這裏是我的JS:

$('input').change(function(e){ 
var closestForm=$(this).closest("form"); 
    closestForm.submit(function(e) { 
    closestForm.ajaxSubmit({ 
       success: function(data){ 
        console.log('form submitted successfully'); 
       } 
     }); //ajaxSubmit 
    return false; 
    }); //submit 
}); //change 

請注意我想做提交使用AJAX,但不是因爲我有其他地方的問題我的代碼庫在那裏我能夠使用jQuery Form pluginajaxSubmit()沒有問題。

想法?

回答

2

由於您希望提交輸入更改表單。你不需要在表單提交事件

$('input').change(function(e){ 
    var closestForm=$(this).closest("form"); 
     closestForm.ajaxSubmit({ 
        success: function(data){ 
         console.log('form submitted successfully'); 
        } 
      }); //ajaxSubmit 
     return false; 
    }); //change 
+0

- @ Shusl,謝謝。不幸的是,它觸發了特定於jQuery表單插件的錯誤。你有任何建議,同時還包括提交事件? –

+1

@timpeterson。如果你正在尋找文件上傳,那麼你可以按照這些thred http://stackoverflow.com/questions/166221/how-can-i-upload-files-asynchronously-with-jquery和http://stackoverflow.com/questions/2302344/jQuery的外形插件文件上傳。其他明智的你可以使用jQuery ajax。 – Anoop

+0

對於閱讀此接受答案的每個人,請參閱我的答案,以獲取有關如何解決此問題的完整說明。 –

0

你可以嘗試「鎖定」的表單提交,直到場被填寫,這樣的:

var form_locked = true; 

$("input").change(function(e){ 
    if($(this).val() == "") { 
     form_locked = true; 
    }else{ 
     form_locked = false; 
    } 
}); 

$("form").submit(function(e) { 

    // prevent default form submit 
    e.preventDefault(); 

    if(form_locked) { 
     alert("Please fill in the field!"); 
    }else{ 
     // Do your form submission stuff here 
    } 

}); 
0

我解決了以下的我自己的問題錯誤信息我得到了哪些導致以下問題Q & A. jQuery form plugin - Uncaught TypeError on file upload。基本上,只要我下載了最新的jQuery插件形式js文件,我能夠消除submit()功能,只需使用ajaxSubmit()爲@Shusl建議

jquery.form.js:357 Uncaught TypeError: 
Object function (a,b){return new d.fn.init(a,b,g)} has no method 'handleError' 

我的錯誤信息是與此類似。

特別感謝@Shusl讓我走上正軌。