验证将数组作为名称参数的复选框
Validate Checkbox that has an array as name parameter
我曾经用这样的代码验证复选框表单:
<div>
<form action="survey.php" method="post" name="survey">
<span class="form"><input type="checkbox" name="event1" onClick="return countMarketing()">Event1</span>
<span class"form"><input type="checkbox" name="event2" onClick="return countMarketing()">Event2</span>
<span class"form"><input type="checkbox" name="event3" onClick="return countMarketing()">Event2</span>
<!-- other forms -->
</form>
</div>
还有一个类似于这样的javascript验证(以限制选中复选框的数量):
function countMarketing() {
var NewCountMarketing = 0
if (document.survey.event1.checked)
{NewCountMarketing = NewCountMarketing + 1}
if (document.survey.event2.checked)
{NewCountMarketing = NewCountMarketing + 1}
if (document.survey.event3.checked)
{NewCountMarketing = NewCountMarketing + 1}
if (NewCountMarketing == 3)
{
alert('Please choose only two')
document.survey; return false;
}
}
这样的验证是有效的。但是现在,假设我使用php来提交,我如何在JS中检查表单名称是否如下:
<input type="checkbox" name="events[]" id="event1" onClick="return countMarketing()">Event1
我试着把JS改成:
if (document.survey.events[].checked)
{code here}
if (document.survey.getElementByName('events[]').checked)
{code here}
if (document.survey.getElementById('event1').checked)
{code here}
但是它不起作用。。有人能告诉我这件事吗?非常感谢:)
如果您实际上正在使用jQuery,您可以执行以下操作:
在使用此函数之前,请确保在文档中包含jQuery;在您尝试运行函数之前加载文档。
function countMarketing() {
if( $('input[name="events[]"]').filter(':checked').length > 2 ) {
alert('Please choose only two');
}
}
首先移除inline events declaration
并将其移动到external Javascript file
或script block
您可以始终使用bracket Notation
访问此类属性
document.survey["events[]"]
代码
var elems = document.survey,
checkboxNames = ["event1[]", "event2[]", "event3[]"];
for (var i = 0; i < checkboxNames.length; i++) {
bindClick(elems[checkboxNames[i]]);
}
function bindClick(elem) {
elem.addEventListener('click', countMarketing);
}
function countMarketing() {
var NewCountMarketing = 0
var latest;
for (var i = 0; i < checkboxNames.length; i++) {
if (elems[checkboxNames[i]].checked) {
latest = elems[checkboxNames[i]];
NewCountMarketing++;
}
}
if (NewCountMarketing == 3) {
latest.checked = false;
alert('Please choose only two')
document.survey;
return false;
}
}
检查Fiddle
相关文章:
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 正在验证8个真/假复选框或复选框中的2个
- 为复选框javascript指定两个值
- 如何在单击复选框后调用控制器方法
- 从复选框和Selects-KnockoutJS中获取值的总和
- 选中多个具有相同名称的复选框
- 使用Jquery选择或取消选择ListView中的所有复选框
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- 使用$.ajax发布多个复选框
- AngularJS单选筛选不适用于Name、Description和Field4复选框值
- 复选框不重新设置参数中的值
- 如何将动态创建的复选框值作为函数参数传递
- JQuery 复选框筛选器参数
- PHP/MySQL-数据库数据的复选框,提交2个参数
- 验证将数组作为名称参数的复选框
- 选择复选框并将其作为参数发送给操作
- 选择复选框值显示在URL与参数使用Php Javascript
- 如何为复选框单击事件使用自定义事件参数
- 根据复选框将参数追加到 URL
- 使用window.location.assign从复选框中添加多个GET参数到URL