在一组checkbox中,只少选择一个,才可以提交

本文介绍了一个使用JavaScript进行表单验证的例子。该示例通过检查是否有至少一个复选框被选中来验证表单。如果没有任何一个复选框被选中,则弹出警告提示用户选择一项。
ContractedBlock.gifExpandedBlockStart.gifCode
<table id="container">
<tr>
<td>
<label><input type="checkbox">aaaa</label>
<label><input type="checkbox">bbb</label>
<label><input type="checkbox">ccc</label>
<br/>
<input type="button" value="submit" onclick="if (!CheckChecked('container')) window.alert('choose one item!');"/>
</td>
</tr>
</table>
    <script type="text/javascript" language="javascript">
    
function CheckChecked(container_name)
    {
        
var container = document.getElementById(container_name);
        
var inputs = container.getElementsByTagName("input");
        
for (var i=0; i<inputs.length; i++)
        {
            
if (inputs[i].type == "checkbox")
            {
                
if (inputs[i].checked == true)
                {
                    
return true;
                }
            }
        }
        
return false;
    }
    
</script>

转载于:https://www.cnblogs.com/luqingfei/archive/2008/12/02/1345442.html

### 动态创建Checkbox并与表单提交绑定 为了实现在Layui `layer.open` 弹出层中动态添加 `checkbox` 并将其与表单提交绑定,可以按照如下方式操作: #### 准备工作 确保已经正确引入了 Layui 插件[^3]。 ```html <link rel="stylesheet" href="./layui/css/layui.css"> <script src="./layui/layui.js"></script> ``` #### 创建HTML结构 定义一个用于显示弹出层的基础 HTML 结构。这里使用了一个 div 容器来承载整个表单内容,并设置了类名 `layui-form` 来启用 Layui 表单样式[^2]。 ```html <div id="popupForm" style="display:none;"> <form class="layui-form" action=""> <!-- checkbox 将在此处动态生成 --> <div id="dynamicCheckboxes"></div> <button type="submit" class="layui-btn">提交</button> </form> </div> ``` #### JavaScript逻辑 通过JavaScript 实现动态加载 `checkbox` 和处理表单提交事件。当调用 `layer.open()` 方法打开新窗口时,可以在回调函数内执行必要的 DOM 操作以插入新的输入控件;同时监听表单的 submit 事件以便捕获用户提交的数据[^1]。 ```javascript // 初始化 layui 组件 layui.use(['layer', 'form'], function(){ var layer = layui.layer; var form = layui.form; // 打开弹出层并初始化数据 layer.open({ title: '选择项', content: $('#popupForm').html(), success: function(layero, index){ // 假设我们有一组选项列表 let options = ['Option A', 'Option B', 'Option C']; // 遍历这些选项并将它们转换成 Checkbox 控件 $.each(options, function(i, optionText){ $(`<input type="checkbox" name="options[]" value="${optionText}" title="${optionText}"><br>`).appendTo('#dynamicCheckboxes'); }); // 更新表单渲染状态 form.render('checkbox'); // 提交表单时触发的动作 $('form.layui-form').on('submit', function(e){ e.preventDefault(); // 阻止默认行为 // 获取选中的值 const selectedValues = []; $("input[name='options[]']:checked").each(function() { selectedValues.push($(this).val()); }); console.log(selectedValues); // 输出已勾选的内容到控制台 // 关闭当前弹窗 layer.close(index); }); } }); }); ``` 上述代码展示了如何在 Layer 弹出层内部构建带有可交互性的复选框,并且能够响应用户的点击动作收集所做选择的信息。注意这里的 `$.each` 是 jQuery 的语法糖,如果项目不依赖于 jQuery,则需替换为原生 JS 或其他库的方法实现相同功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值