2009-10-27 51 views
1

我正在使用以下代碼來檢查我的網站頁面上的複選框是否被選中。但有幾個複選框,我想使用這個相同的功能。我想從提交按鈕單擊調用此函數並將複選框名稱作爲參數傳遞。它應該比驗證該複選框。[JavaScript]:如何將變量定義爲對象類型?

function CheckTermsAcceptance() 
{ 
    try 
    { 
     if (!document.getElementById('chkStudent').checked) 
      alert("You need to accept the terms by checking the box.") 
      return false; 
    } 
    catch(err) 
    { 
     alert(err.description); 
    } 
} 

回答

2
function CheckTermsAcceptance(element){ 
    try{ 
     if (!element.checked){ 
      alert("You need to accept the terms by checking the box.")  
      return false; 
     } 
    }catch(err){ 
     alert(err.description); 
    } 
} 

,並調用它像:

CheckTermsAcceptance(document.getElementById('chkStudent')); 

是這樣嗎?

+0

感謝它的工作。 – RKh 2009-10-27 12:15:53

+0

這是不正確的:在if語句之後丟失的大括號將導致它始終返回false。提交表格將是不可能的。 – 2009-10-27 12:29:03

+0

是真的,我有糾正它 – Victor 2009-10-27 12:47:57

4

只需將參數傳遞給CheckTermsAcceptance()即可。在提醒後您還錯過了一個大括號 - 在if區塊中有兩條語句,並且您將始終執行return false

function CheckTermsAcceptance(checkboxName) 
{ 
    try 
    { 
     if (!document.getElementById(checkboxName).checked) { 
       alert("You need to accept the terms by checking the box.")  
       return false; 
     } 
    } 
    catch(err) 
    { 
     alert(err.description); 
    } 
} 

要從您的提交按鈕中調用此功能,請在提交時調用validateForm這樣的函數。然後,只需構建一個複選框列表並將其ID傳遞到CheckTermsAcceptance

請注意,這種驗證通過jQuery和其他方式處理得非常順利。例如,here's jQuery驗證插件。

+0

我認爲他正在嘗試調用提交函數。所以他還需要做的是掃描所有複選框的表單,並將它們逐個傳遞給函數。 – Bartek 2009-10-27 12:09:16

0

此功能將與位修復了的工作,通過論證,並確保你做雙方的警覺,並在返回錯誤的if語句

function CheckTermsAcceptance(checkBox) //added argument 
{ 
    try 
    { 
     if (!checkBox.checked) { //added block to group alert and fail case 
      alert("You need to accept the terms by checking the box.")  
      return false; 
     } 
     return true; //added success case 
    } 
    catch(err) 
    { 
     alert(err.description); 
    } 
} 

,一旦你有這樣的地方,你就可以使用它就像你的表單驗證所以

<form id="formid" action="" onsubmit="return validate('formid');"> 
<input type=checkbox name="name" id="name"><label for="name">Name</label> 
<input type=checkbox name="name2" id="name2"><label for="name2">Name2</label> 
<input type=submit> 
</form> 
<script> 
function validate(formid) { 
    var form = document.getElementById(formid); 
    for (var i = 0; i < form.elements.length; i++) { 
     var elem = form.elements[i]; 
     if (elem.type == 'checkbox' && !CheckTermsAcceptance(elem)) { 
      return false; 
     } 
    } 
    return true; 
} 
</script> 

我可以證實,這個工程在Firefox 3.5

也jQuery和jQuery.validate使這很容易實現的一個非常明確的方式。

0

你也可以使用更多的參數來允許不同的選項。

function CheckTermsAcceptance() 
{ 
    var ctrl = arguments[0]; 
    var valueExpected = arguments[1]; 
    var outputMessage = arguments[2]; 
    if(valueExpected == null) valueExpected = true; 
    if(outputMessage == null) outputMessage = "You need to accept the terms by checking the box."; 

    try 
    { 
     if(ctrl.checked == valueExpected) 
     { 
      Log.Message(outputMessage); 
     } 
    } 
    catch(err) 
    { 
     alert(err.description);    
    } 
} 
相關問題