2015-10-19 87 views
1

我正在做一個事件,頁面檢查是否需要通過POST提交數據或簡單的Ajax調用是否正常。 IE:有一個文件,如果沒有文件提交數據並繼續使用該頁面,則需要處理上載。Jquery無需循環提交

$(document).on("submit", "form", function (e) { 
    e.preventDefault(); 
    if($(this).find('[name=file]').val()) { // HAS FILE SUBMIT 
      /* 
       If I use $(this).submit() then it just loops. I figured return true might work or putting e.preventDefault(); after this code 
      */ 
    } 


    // If it made it past that if then does ajax things that are fine. 
} 

在此先感謝您。

+0

只需使用'this.submit()'來實際提交表單,而不僅僅是觸發事件處理程序? – adeneo

+0

@adeneo這是正確的答案,請張貼它,我會接受它。如果你使用jquery,它只會循環。我也應該嘗試一下。其他答案是無法迴避的。 – Iscariot

回答

1

使用jQuery的$(this).submit()將觸發事件處理程序,並阻止默認動作,這樣的形式從來沒有提交,它只是循環代替。

爲了防止發生這種情況,請改用原生this.submit()

$(document).on("submit", "form", function (e) { 
    e.preventDefault(); 
    if ($(this).find('[name=file]').val()) { // HAS FILE SUBMIT 
     this.submit(); 
    } else { 
     $.ajax(options); // ...etc 
    } 
} 
+0

可能不是一個壞主意來解釋'this'和'$(this)'之間的區別。 – Sparky

0

我沒有測試它,但不能只是先測試文件,然後,如果沒有文件,請防止默認(或返回false)?

$(document).on("submit", "form", function (e) { 
    if($(this).find('[name=file]').val()) { 
     return true; 
    } 
    else { 
     e.preventDefault(); 
     // Do AJAX 
    } 
} 
+0

是的,我說我已經在評論中試過了,它不起作用。啊,我看到評論必須滾動,你沒有看到我已經寫過。 – Iscariot