Javascript 提交表单时,HTML 输入复选框返回“开”而不是“真”
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/6441654/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
HTML Input Checkbox return 'On' instead of 'True' when submitting form
提问by user460667
I have a MVC3 app using Project Awesome (http://awesome.codeplex.com/), but I am getting a weird behaviour on checkboxes. I have the following simple Html within a Modal popup <input type="checkbox" class="check-box" name="IsDeleted">
我有一个使用 Project Awesome (http://awesome.codeplex.com/) 的 MVC3 应用程序,但是我在复选框上出现了奇怪的行为。我在模态弹出窗口中有以下简单的 Html<input type="checkbox" class="check-box" name="IsDeleted">
When I submit the form containing this element, its post value is 'on' instead of the expected 'true' (when element is checked).
当我提交包含此元素的表单时,它的 post 值为“on”而不是预期的“true”(当元素被选中时)。
Does anybody know why this is? I am assuming there may be some javascript somewhere messing with the form data, but wanted to check whether there isn't some HTML I am missing.
有人知道这是为什么吗?我假设某处可能有一些 javascript 弄乱了表单数据,但想检查是否没有我遗漏的一些 HTML。
Thanks
谢谢
回答by Niklas
Set the checkboxes value
attribute to true
and you will get true
in your post value.
将复选框value
属性设置为true
,您将获得true
您的帖子值。
回答by mkilmanas
It's browser specific, I suppose, what to send when value is undefined. You need to defined value
attribute on your radios/checkboxes to be sure what will be passed back to you. I would suggest value="1"
我想这是浏览器特定的,当值未定义时发送什么。您需要value
在收音机/复选框上定义属性,以确保将传递回给您的内容。我会建议value="1"
回答by Otto Kanellis
set data-val="true" and value="true"
by deafult...
if checkbox is checked then returns true
data-val="true" and value="true"
由默认设置...如果复选框被选中则返回 true
回答by Michael Wright
Surely you should just check if it is set - the value that it sends across is irrelevant, if it's not checked, then nothing at all gets sent when you POST.
当然,您应该只检查它是否已设置 - 它发送的值无关紧要,如果未检查,则在您 POST 时根本不会发送任何内容。
回答by Siddhartha
Check Checkbox is checked or not if checked set Hidden field true else set hidden field false.
如果选中设置隐藏字段为真,否则设置隐藏字段为假。
$('#hiddenFieldId').val($('#CheckBoxId').attr('checked')=='checked')
回答by Trang Tran Thi My
In HTML, add a input type="hidden" above checkbox:
在 HTML 中,在复选框上方添加 input type="hidden":
<input name="active" id="activeVal" type="hidden">
<input id="active" type="checkbox">
Then, add a script as below:
然后,添加如下脚本:
$('#activeVal').val($('#active').is(':checked'));
$('#active').change(function() {
$('#activeVal').val($('#active').is(':checked'));
});
When you do eg. $('#your-form').serialize()
in jQuery, you will get value of checkbox when checked active: true
or uncheck active: false
当你做例如。$('#your-form').serialize()
在 jQuery 中,选中active: true
或取消选中时,您将获得复选框的值active: false
回答by Venkat
Use jQuery
使用 jQuery
var out=$('.check-box').is('checked')
If checkbox is checked out=true else out=false
如果复选框被选中=true 否则 out=false
回答by sergzach
Use jQuery for cross-browser decision. And it will return trueor falseanyway.
使用 jQuery 进行跨浏览器决策。无论如何它都会返回真或假。
$('#check-box-id').attr('checked' ) == true
if your checkbox has an id check-box-id. For your current version use the next(select by class name):
如果您的复选框有一个 id check-box-id。对于您当前的版本,请使用下一个(按类名选择):
$('.check-box').attr('checked' ) == true