我有一个表单,可以将数据提交到我的数据库。
我目前有两个选项的下拉列表。为简化起见,我想用(是/否或开/关)切换开关替换下拉列表。我假设一个复选框是处理此问题的最佳方法。这要求复选框具有checked
值(ON)和unchecked
值(OFF),我可以在表单中提交。
我已经研究了几种解决方案,但似乎无法正常工作。
我尝试过此处描述的方式:Post the checkboxes that are unchecked,但选中此框后,提交的值为ON,OFF
,而不是ON
。
另一件事是我希望复选框显示其当前值。
我正在使用ASP.NET网页。
我希望一切都有道理。任何建议都会很棒。
答案 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是否为空。如果它是空的做某事,否则它不是空的并做其他事情。
希望我能正确理解你的问题。