2010-11-03 90 views
0

我有一個選擇框,讓用戶選擇什麼樣的形式,他需要讓我們填寫。使用幾個JS功能

的2個選項是從一組單人或某人因此一些單箇中使用的字段集將與組中的某些字段集進行切換。

所以對於單用戶我有這個功能:單信息,獲獎信息,記者信息,家長信息。 和組我有羣組信息,獲獎信息,記者信息。

中的onsubmit我有另一張支票()函數將檢查該複選框並選擇將調用正確的函數

function Check() { 
    if (document.getElementById("type").value=="s") { 
     return CheckSingleInformation(); 
     return CheckWinningInformation(); 
    } 
    else if (document.getElementById("type").value=="g") { 
     return CheckGroupInformation(); 
     return CheckWinningInformation(); 
    } 

} 

出於某種原因,在完成第一個功能之後,如果回到沒有

假它會發送表單而不是停在第二個函數的第一個錯誤

我該怎麼辦才能解決它?

+0

你的問題不明確。你想在這裏實現什麼? – 2010-11-03 10:19:17

回答

0

沒關係......找到了答案:-)

第一我已經改變了主要功能如下所示:

function Check() { 
    if (document.getElementById("type").value=="s") { 
     CheckSingleInformation(); 
     CheckWinningInformation(); 
    } 
    else if (document.getElementById("type").value=="g") { 
     CheckGroupInformation(); 
     CheckWinningInformation(); 
    } 

} 

但後來我發現了第一個功能之後,它不會停止所以我改變了它是這樣

function Check() { 
    if (document.getElementById("type").value=="s") { 
     if (CheckSingleInformation()==false) {return false} 
     if (CheckWinningInformation()==false) {return false} 
    } 
    else if (document.getElementById("type").value=="g") { 
     if (CheckGroupInformation()==false) {return false} 
     if (CheckWinningInformation()==false) {return false} 
    } 
} 

是正確的方式?

+0

更好的辦法是這樣做:if(!CheckSingleInformation()||!CheckWinningInformation){return false; } else {return true; }' – amireh 2010-11-03 10:22:41

+0

你用函數'&&'邏輯運算符調用函數。如下所示:'返回CheckFoo()&& CheckBar();'。如果任何一個返回'false',結果將是'false'。如果兩者都是「真」,結果將是「真」。 – 2010-11-03 10:26:04

0

onsubmit必須具有值「return Check()」。如果您只是調用Check(),則不會使用返回的值,並會繼續提交。

+0

我知道! :-) – 2010-11-03 10:20:42

0

2說明:

  • 返回 「真」 距離的onsubmit()事件將從傳播停止;表單將不會被提交(通常是您在進行AJAX發佈時想要的行爲)
  • checkWinningInformation();將永遠不會在兩個塊中調用,因爲之前的語句是實際跳出的「返回」該方法的執行......這不可能是你想要的,可以嗎?
0

檢查嵌套條件,

function Check() { 
    if (document.getElementById("type").value=="s") { 
     if(!CheckSingleInformation()){ 
      return CheckWinningInformation(); 
     } 
     return true; 
    } 
    else if (document.getElementById("type").value=="g") { 
     if(!CheckGroupInformation()){ 
      return CheckWinningInformation(); 
     } 
     return true; 
    } 

} 
0

返回是以函數用於兩個原因:

  • 你想腳本停止,如果有事執行。
  • 您希望該函數將值返回給調用函數。

您使用return像這樣:

return CheckSingleInformation(); <-- exit here 
return CheckWinningInformation(); 

你的腳本將 「退出」(或提交表單)第一回後吧!

,你可以做些什麼來解決此問題:在結束,以及在CheckGroupInformation()末呼叫CheckWinningInformation()

0

使用邏輯AND運算符(& &)就可以。 所以下面的代碼:

function Check() { 
    if (document.getElementById("type").value=="s") { 
     return CheckSingleInformation(); 
     return CheckWinningInformation(); 
    } 
    else if (document.getElementById("type").value=="g") { 
     return CheckGroupInformation(); 
     return CheckWinningInformation(); 
    } 

} 

可能是:

function Check() { 
    if (document.getElementById("type").value=="s") {   
     return (CheckWinningInformation() && CheckSingleInformation()); 
    } 
    else if (document.getElementById("type").value=="g") {   
     return (CheckWinningInformation() && CheckGroupInformation()); 
    } 

}