【问题标题】:html5 checkbox returns "on" value instead of what i set it tohtml5 复选框返回“on”值而不是我设置的值
【发布时间】:2015-05-07 22:14:24
【问题描述】:

我遇到了 html5 复选框的问题,我必须在提交按钮上发布它的值。 每次单击检查按钮时,我都有一个 onclick,如果未选中,则将其值设置为“0”,如果选中,则将其值设置为“1”。 问题是它可以完美地取消选中按钮并返回值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”

【问题讨论】:

  • 在输入元素&lt;input id="dati[3]" name="dati[3]" value="0" type="checkbox" onclick="ff()"&gt;添加value属性
  • 添加值 ='1',并更改了 " 和 ',但仍然不起作用... :

标签: javascript html checkbox submit


【解决方案1】:

如果未选中复选框,则不会成功控制。这意味着它根本不会提交,而不是提交的值将是0

如果它被选中,那么它将提交它的值。您没有value 属性,因此其默认值为on

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

onclick="var x3=document.getElementById("

这将引发 JavaScript 错误。

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

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

【讨论】:

  • 感谢您的调试。我更改了“和”,但仍然无法正常工作,我理解您所说的复选框,如果未选中则不提交任何内容,这就是我尝试更改此行为的原因。不幸的是,我无法将此逻辑放到服务器端,因为这是代码生成的代码。所以我真的需要一种方法从客户端的选中/未选中按钮中获取 0 或 1,因为我必须通过提交转发这个值。现在代码如下 但还是不行
【解决方案2】:
    <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';
}
">

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

【讨论】:

  • 这样改变了: 但还是不行...
【解决方案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。

感谢大家的帮助!!!

【讨论】:

    猜你喜欢
    • 2012-02-29
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    • 2020-11-26
    • 1970-01-01
    • 1970-01-01
    • 2012-03-27
    • 2020-06-06
    相关资源
    最近更新 更多