[JavaScript]:如何将变量定义为对象类型?

时间:2009-10-27 12:03:19

标签: 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);
    }
}   

5 个答案:

答案 0 :(得分: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验证插件。

答案 1 :(得分: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'));

是吗?

答案 2 :(得分:0)

很抱歉没有回答你的问题。但您应该认真考虑使用jQueryjQuery validate

答案 3 :(得分:0)

此函数将使用一些修复,传递参数并确保在if语句中同时执行alert和return false

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使这很容易以非常声明的方式实现。

答案 4 :(得分: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);             
    }
}