我正在使用以下代码检查我网站页面上的复选框是否已选中。但有几个复选框,我想使用相同的功能。我想从“提交”按钮单击调用此函数,并将复选框名称作为参数传递。它应该比验证复选框。
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);
}
}
答案 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)
很抱歉没有回答你的问题。但您应该认真考虑使用jQuery和jQuery 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);
}
}