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);    
    } 
} 
相关问题