2

我正在尝试验证表单中的复选框。

我的表格如下:

<form name="results" action=request_job.php method="post" 
onsubmit="return validateForm.apply(this)">
<td name='checkb'colspan='2' class="noborder" width='100%' align="center">
                <input type='checkbox' name='ModelArray[]' value='1'>m1
                                    <input type='checkbox' name='ModelArray[]' value='2'>m2
                                    <input type='checkbox' name='ModelArray[]' value='3'>m3
                                    <input type='checkbox' name='ModelArray[]' value='4'>m4
                                    <input type='checkbox' name='ModelArray[]' value='5'>m5
                                    <input type='checkbox' name='ModelArray[]' value='6'>m6
                                    <input type='checkbox' name='ModelArray[]' value='7'>m7

如果没有选中复选框,我希望有一个警报。我该怎么做呢。我现在已经尝试了很长时间。

谢谢

解决了这个:

var wrap=doc.get("checkb");
ArrCB=wrap.getelementbyTagName('input');
ArrCB_l=ArrCB.lenght();
while(ArrCB_l--){
  var CB=ArrCB[ArrCB_l];
  CB.checked()==True;
return 1
}
return 0

}
4

6 回答 6

2

你可以试试这个(不依赖于 jQuery,因为你没有指定):

(function() {
    window.validateForm = {};
    window.validateForm.apply = function(o) {
        var inputs = document.getElementsByTagName("input");

        for(var i = 0; i < inputs.length; i++) {
            if(inputs[i].type == "checkbox" && inputs[i].checked) 
                return true;
        }
        alert('You must select at least 1');
        return false;
    };
})();

这将遍历页面中的所有输入。一旦找到一个选中的复选框,它将返回 true,如果没有找到,则返回 false。

我添加了window.validateForm = {}just 以便它可以工作,如果您已经定义了对象,您可能不需要它。

于 2012-05-03T15:20:28.617 回答
1

我会按照以下(非常干净 - 纯浏览器 js)的方式来做(并在jsfiddle上成功尝试过)

function validateForm() {
    var i, chks = document.getElementsByName('ModelArray[]');
    for (i = 0; i < chks.length; i++)
        if (chks[i].checked)
            return true;
    alert('No value selected');
    return false;
}​
于 2012-05-03T15:30:10.187 回答
1

从我可以从您的查询中收集到的任何信息中,我已经发布了一个解决方案。看看这是否适合你。

<form name="results" action="request_job.php" method="post" onsubmit="return validateForm()">
    <input type='checkbox' name='ModelArray[]' value='1'>m1
    <input type='checkbox' name='ModelArray[]' value='2'>m2
    <input type='checkbox' name='ModelArray[]' value='3'>m3
    <input type='checkbox' name='ModelArray[]' value='4'>m4
    <input type='checkbox' name='ModelArray[]' value='5'>m5
    <input type='checkbox' name='ModelArray[]' value='6'>m6
    <input type='checkbox' name='ModelArray[]' value='7'>m7
    <input type="submit" value="Submit">
</form>

<script type="text/javascript">
function validateForm()
{
    if( $('input[name="ModelArray[]"]:checked').length == 0 )
    {
        alert("You must check atleast one checkbox");
        return false;
    }
    else
        return true;
}
</script>

如果这对你不起作用,请告诉我。

于 2012-05-03T15:21:11.190 回答
0
var wrap=doc.get("checkb");
ArrCB=wrap.getelementbyTagName('input');
ArrCB_l=ArrCB.lenght();
while(ArrCB_l--){
  var CB=ArrCB[ArrCB_l];
  CB.checked()==True;
  return 1
 }
 return 0

 }
于 2012-07-31T07:47:40.820 回答
0

给他们一个独特的类,例如'chbValidate',然后尝试if($('.chbValidate:checked').length == 0)

于 2012-05-03T15:23:21.047 回答
-1

尝试这个:

if($('input[name="ModelArray[]"]:checked').length == 0) {
    alert('No checkbox is checked');
}

在您提交时的验证功能中。

于 2012-05-03T15:08:14.540 回答