1

我有一个将数据提交到我的数据库的表单。我目前有一个包含两个选项的下拉列表。为了简化事情,我想用(是/否或开/关)切换开关替换下拉列表。我认为复选框是处理此问题的最佳方法。这要求复选框有一个checked值 (ON) 和一个unchecked我可以在表单中提交的值 (OFF)。

我已经研究了几种解决方案,但似乎无法让任何东西正常工作。

我已经尝试了这里描述的方式:发布未选中的复选框,但是当检查框时,提交的值是ON,OFF,而不是ON

另一件事是我希望复选框显示其当前值。

我正在使用 ASP.NET 网页。

我希望一切都说得通。任何建议都会很棒。

4

3 回答 3

0

由于复选框是布尔值,因此从技术上讲,您无需执行任何操作即可获得所需的数据。既然您知道表单中包含哪些复选框,为什么不让表单仅提交选中的复选框,然后将其与可用复选框列表进行比较以了解哪些复选框已关闭?

编辑

我想我明白混乱在哪里。

有两种类型的布尔字段非常常见——一种是 True 或 False,另一种可以是 True、False或 Null。这是一个重要的区别。

对于第一种类型,使用复选框是完美的,因为通过收集所有“真”(或“开”)值,您也会自动收集假值。但是,使用第二个选项,使用复选框可能会有点混乱,您可能应该使用 a<select>而不是复选框。

无论如何,如果您决定使用复选框,那么很容易查看复选框是否选中或不使用.checked. 这是一个 jsfiddle记录每个复选框 id 的日志,并告诉控制台它是否被选中。我使用了需要 chrome 的 console.log(),但显然你可以用你想要的任何东西(警报或函数或其他什么)替换它。

$('button').on('click', function() {
      var chbx = $('input[type=checkbox]');    
      $.each(chbx, function( index, value ) {
          console.log(value.id+':'+value.checked);        
    });
});

如果您想为复选框添加值,您可以将自定义属性添加到输入标签 <input type='checkbox' myattr='whateva' >并使用 jQuery 轻松访问它们(尽管这在 IE8 或更早版本上不起作用)。

于 2013-09-18T21:42:09.057 回答
0

我认为最好使用单选按钮。每对将具有相同的名称,每个按钮具有不同的值。只能检查每对中的一个,因此您将始终知道选择了哪个值(“on”或“off”)。这避免了处理未选中的复选框。

于 2013-09-18T21:35:17.650 回答
0

您可以通过执行类似的操作来检查是否选中了一个框

if(document.getElementById('yourCheckBox').checked) {
    // true
} else {
    // false
}

我不相信未选中的复选框会将任何内容传递给您的服务器脚本,因此在服务器端检查传递的 id 是否为空。如果它的空做某事,否则它不是空的并做其他事情。

希望我正确理解了你的问题。

于 2013-09-18T21:44:38.210 回答