2014-06-09 106 views
-1

我在這裏叫的一種形式:表格即使在Javascript驗證失敗後也提交?

<span class="aligncenter button"><a href="#" onclick="submitForm('newIncident');">Submit</a></span> 

和我有一個JavaScript函數在這裏:提交時

if (myForm == 'newIncident') 
    { 
     var vDemAge = document.forms['newIncident']['demAge'].value; 
     var vBibNumber = document.forms['newIncident']['bibNumber'].value; 

     // Run through validations before submitting form 
     validateTime(); 
     validateDate(); 
     validateAge(); 
     validateGender(); 
     validateLocation(); 
     validateType(); 
     validateDisposition(); 

     if (vDemAge == 'Age' || vDemAge == '') // If Age is not entered, set the value to be blank 
      { 
       document.forms['newIncident']['demAge'].value = ''; 
      } 
     if (vBibNumber == 'Bib #' || vBibNumber == '') // If Bib # is not entered, set the value to blank 
      { 
       document.forms['newIncident']['bibNumber'].value = ''; 
      } 
     document.getElementById(myForm).submit(); 
    } 
else 
    { 
     document.getElementById(myForm).submit(); 
    } 

所以我每個驗證爲我在序列正在調用一個單獨的功能表格。如果我註釋掉「document.getElementById(myForm).submit();」,驗證按預期運行。但是,如果我不註釋它,即使驗證失敗,它也會每次提交。我怎樣才能阻止這種情況發生?

謝謝!編號: 所以這是我正在運行的驗證之一。它們的結構都是一樣的。某處我應該返回布爾真/假?我究竟如何在下面的這個插入?

function validateDisposition() 
{ 
    var vIncidentDisposition = document.forms['newIncident']['incidentDisposition'].value; 
    if (vIncidentDisposition == '') 
     { 
      document.forms['newIncident']['incidentDisposition'].className = 'required'; 
     } 
    else 
     { 
      document.forms['newIncident']['incidentDisposition'].className = 'formborder'; 
     } 
} 
+0

你能展示一些驗證功能嗎? – Fabricator

+1

你在哪裏告訴表單不要提交? – bloodyKnuckles

回答

0

假設你的驗證函數返回一個布爾值,你應該有類似

if(validateTime() && validateDate() && validateAge()... etc) { 
    if (vDemAge == 'Age' || vDemAge == '') // If Age is not entered, set the value to be blank 
     { 
      document.forms['newIncident']['demAge'].value = ''; 
     } 
    if (vBibNumber == 'Bib #' || vBibNumber == '') // If Bib # is not entered, set the value to blank 
     { 
      document.forms['newIncident']['bibNumber'].value = ''; 
     } 
    document.getElementById(myForm).submit(); 
} 
+0

是的,那是我的懷疑。他們可能認爲其他驗證的「返回錯誤」會阻止更高級別的功能運行,但情況並非如此 – tomysshadow

+0

請參閱我的編輯... – livetoski78

0

我得到它的工作!布爾的想法使我走上了正確的道路。謝謝!

我剛剛爲每個驗證添加了「返回true」和「返回false」,然後使用上面的「& &」的答案,如果將邏輯構建到myform「if」中。如果它沒有通過所有的人,那麼「返回假」。奇蹟般有效!

相關問題