2014-02-20 31 views
0

這是一個相當基礎的調查表格;我使用JQuery根據用戶選擇有條件地顯示/隱藏字段。.submit()不能與其他jQuery函數一起使用?

//FORM CONDITIONALS Hides all the helpfulness radios and only shows them when "Yes" for a particular question is checked 
$("#datainp .occurrence").click(function() { 
    var nexttd = $(this).next('td'); 
    if ($(this).children("input:first").is(':checked')) { 
     $(nexttd).show(); 
     $(nexttd).children("input").removeAttr("checked"); 
    } else { 
     $(nexttd).hide(); 
    } 

我有一個客戶端驗證功能以及:。

//Client side validation and submissions 
$('#submit').click(function(e) { 

    e.preventDefault(); 

    var level = $('#Level').val(); 
    var schoolid = $('#school').val(); 

    if (!schoolid) { 
     alert("Please select a school!"); 
     return; 
    } 
    if (!level) { 
     alert("Please select a grade level!"); 
     return; 
    } 
    alert("foo"); 
    $('#frmTeacherEvalGuidance').submit(function() {alert("bar") }); 

}); 

一切正常,除了在我的驗證的結束.submit()(警報確認)。是否與我的表單條件部分與.submit()衝突?當我註釋掉JavaScript的第一部分時,表單會按照它應該提交的內容提交。的jsfiddle是在這裏:http://jsfiddle.net/r4Y4g/1/(html的是一點點笨拙,我知道,但不是我的;更新舊的團隊項目),而不是.preventDefault

回答

1

您應該使用.stopPropagation()()

試試這個:

//Client side validation and submissions 
    $('#submit').click(function(e) { 

     e.stopPropagation(); 

     var level = $('#Level').val(); 
     var schoolid = $('#school').val(); 

     if (!schoolid) { 
      alert("Please select a school!"); 
      return false; 
     } 
     if (!level) { 
      alert("Please select a grade level!"); 
      return false; 
     } 

     return true; 
    }); 
+0

「富」警惕火災,但仍然沒有表單提交 – WillardSolutions

+0

我已經編輯我的答案。現在我已經知道你在說什麼了。 http://jsfiddle.net/r4Y4g/1/ –

+0

@ChrisWillard看看。 ;) –

0

你可以添加一個監聽器來代替:

$("#frmTeacherEvalGuidance").on("submit", function() { 
    alert("bar"); 
}); 
+0

只是嘗試重寫函數作爲提交的提交聽衆,但這意味着要麼1)我失去了驗證的能力(即無論我的陳述如何,它都會提交);或2)如果我使用preventDefault,我仍然必須在驗證後使用.submit()。無論如何,我仍然沒有我需要的功能。 – WillardSolutions

相關問題