Checkbox切换开关,带有Checked / Unchecked值

时间:2013-09-18 21:25:55

标签: javascript asp.net checkbox asp.net-webpages

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

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

我尝试过此处描述的方式:Post the checkboxes that are unchecked,但选中此框后,提交的值为ON,OFF,而不是ON

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

我正在使用ASP.NET网页。

我希望一切都有道理。任何建议都会很棒。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

修改

我想我明白了混乱的地方。

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

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

无论如何,如果您决定使用复选框,那么很容易看到是否使用.checked选中了复选框。 Here's a 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或更早版本)。

答案 2 :(得分:0)

您可以通过执行类似

的操作来检查是否已选中复选框
if(document.getElementById('yourCheckBox').checked) {
    // true
} else {
    // false
}

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

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