html5 复选框 returns "on" 值而不是我设置的值

html5 checkbox returns "on" value instead of what i set it to

我遇到了 html5 复选框的问题,我必须 post 它在提交按钮上的值。 每次单击复选按钮时,我都有一个 onclick,如果未选中则将其值设置为“0”,如果选中则设置为“1”。 问题是取消选中按钮和 returns 值 0 是完美的,但是当我单击它以将其设置为 1 时,它会传递 "on" 作为值而不是“1”。 有关于此环岛的想法吗?

以下是按钮未选中时的代码:

<input id="dati[3]" name="dati[3]" type="checkbox" onclick="
var x3=document.getElementById("dati[3]").value; 

if (x3=="1") {
    document.getElementById("dati[3]").value="0";
} else {
    document.getElementById("dati[3]").value="1";
}
">

如果按钮开始选中它也有同样的问题,它会正确取消选中,但再次点击选中它时值 "on" 而不是“1”

    <input id="dati[3]" name="dati[3]" type="checkbox" onclick="
var x3=document.getElementById("dati[3]").value; 

if (x3=="1") {
    document.getElementById("dati[3]").value="0";
} else {
    document.getElementById("dati[3]").value="1";
}
">

这是完全错误的语法。我什至不知道为什么你的浏览器正在执行任何代码 您不能在代码中使用 "。你必须在 javascript 代码中使用 ' 像这样:

 <input id="dati[3]" name="dati[3]" type="checkbox" value="0" onclick="
var x3=document.getElementById('dati[3]').value; 

if (x3=='1') {
    document.getElementById('dati[3]').value='0';
} else {
    document.getElementById('dati[3]').value='1';
}
">

也许这甚至会导致您的错误。试一试,告诉我它是否修复了

如果一个复选框没有被选中那么它就不是一个成功的控件。也就是说根本不会提交,并不是说提交的值会是0.

如果选中,则将提交其值。您没有 value 属性,因此其默认值为 on

您有 JavaScript 尝试更改它的值,但那永远不会 运行 因为您的 HTML 中有语法错误。 JavaScript 内的第一个 " 将结束属性值。这给你留下了这个:

onclick="var x3=document.getElementById("

这将引发 JavaScript 错误。

忘记尝试提交 01。移动逻辑服务器端并关心该字段是否已提交而不是它具有的特定值。您可以将 value="1" 作为 HTML 属性包含在内,这样它将不提交任何内容或 1 而不是不提交任何内容或 on.

一种更常用的方法是使用 name="dati[]" value="3" 并担心数组中有哪些值而不是它们所在的位置。

我是这样解决的:

<input id="dati[3]" type="hidden" name="dati[3]" value="1">
<input id="IarITK0MIY" type="checkbox" checked value="1" 
onclick="var x3=document.getElementById('dati[3]').value;
if (x3=='1')
{document.getElementById('dati[3]').value='0';
} else {document.getElementById('dati[3]').value='1';}">

现在它按照我的代码中的预期工作,我可以发送 "dati[3]" 1 或 0,具体取决于是否选中复选框的值。

谢谢大家的帮助!!!