javascript 提交表单时,HTML输入复选框返回“On”而不是“True”

rqqzpn5f  于 2023-02-07  发布在  Java
关注(0)|答案(9)|浏览(176)

我有一个使用Project Awesome(http://awesome.codeplex.com/)的MVC 3应用程序,但是我在复选框上遇到了一个奇怪的行为。
当我提交包含此元素的表单时,它的post值为“on”,而不是预期的“true”(当元素被选中时)。
有人知道这是为什么吗?我假设可能有一些javascript的地方搞乱了表单数据,但想检查是否有一些HTML我错过了。
谢谢

bbmckpt7

bbmckpt71#

value属性的复选框设置为true,您将在您的帖子值中获得true

raogr8fs

raogr8fs2#

我想这是浏览器特有的,当值未定义时发送什么。你需要在你的单选/复选框上定义value属性,以确保什么会被传递回你。我建议使用value="1"

0ejtzxu1

0ejtzxu13#

通过默认设置data-val="true" and value="true" ...如果选中复选框,则返回true

n1bvdmb6

n1bvdmb64#

选中复选框是否选中,如果选中,则将隐藏字段设置为真,否则将隐藏字段设置为假。

$('#hiddenFieldId').val($('#CheckBoxId').attr('checked')=='checked')
hpcdzsge

hpcdzsge5#

当然,您应该检查它是否被设置-它发送的值是无关紧要的,如果没有检查,那么当您POST时什么也不会发送。

3ks5zfa0

3ks5zfa06#

没有工作!我结束了在一个hacky的方式后,看到序列化的形式对象之前,张贴到控制器/行动。它不安全的情况下,如果任何人将有任何文本框内可能包含和。在我的情况下,我有一个复选框数组,所以我做了这个黑客后,我非常肯定,我不会有问题。

var formData = $("#form").serialize();
formData = formData.replaceAll('=on&','=true&');
if (formData.endsWith('=on'))
{
 formData = formData.substring(0, formData.length - 3) + "=true";
}

希望这对那些“某人”有帮助。黑客快乐。

oug3syen

oug3syen7#

使用jQuery进行跨浏览器决策,无论如何它都会返回 truefalse

$('#check-box-id').attr('checked' ) == true

如果您的复选框具有id check-box-id。对于您的当前版本,请使用 the next(按类名选择):

$('.check-box').attr('checked' ) == true
mqkwyuun

mqkwyuun8#

使用jQuery

var out=$('.check-box').is('checked')

如果复选框被选中=true否则被选中=false

58wvjzkj

58wvjzkj9#

在HTML中,添加输入类型=“hidden”上方复选框:

<input name="active" id="activeVal" type="hidden">
<input id="active" type="checkbox">

然后,添加如下脚本:

$('#activeVal').val($('#active').is(':checked'));
$('#active').change(function() {
     $('#activeVal').val($('#active').is(':checked'));
});

例如,在jQuery中执行$('#your-form').serialize()时,如果选中active: true或取消选中active: false,则会获得复选框的值

相关问题