未正确捕获表单数据
Posted
技术标签:
【中文标题】未正确捕获表单数据【英文标题】:Form Data is not captured correctly 【发布时间】:2014-10-23 17:07:05 【问题描述】:我尝试了以下方法来捕获复选框选择时的值“1”和取消选择复选框时的值“0”。我面临的问题是,如果我选中该复选框,则会捕获值“1”,但如果我没有选中该复选框,则不会在表单数据上捕获值 =“0”。
JS:
<script>
function setvalue()
if (document.getElementById('binary').checked = true)
document.getElementById('binary').value='1';
else
document.getElementById('binary').value='0';
</script>
html:
<input name="Maximize" id="binary" type="checkbox" value=" ">
【问题讨论】:
查看格式颜色。你看出什么不对了吗?提示:你错过了结束 将= true
更改为 === true
。 =
单独是一个赋值运算符,所以 value
总是被设置为 "1"
并且永远不会进入 else
部分
天哪,请不要分配字符串化的数字。 1
或 0
就可以了
@SterlingArcher:你能详细解释一下吗?
默认情况下元素值是字符串,但将整数用引号括起来是一种不好的做法。就像if (x == "true")
,其中 true 现在是字符串而不是布尔值。另外,缓存你的元素,这样你就不必每次都调用document.getElementById("binary")
。
【参考方案1】:
未选中的复选框将不会被提交。
在复选框前插入隐藏输入:
<input name="Maximize" type="hidden" value="0">
<input name="Maximize" type="checkbox" value="1">
但是,它是多余的。当您在服务器端解析表单数据时,只需假设未设置变量时的值为0
【讨论】:
我试过这个。它只捕获“0”。当我选中复选框时,不会捕获值“1” 被什么捕获?当您发送表单并且复选框已被选中时,将提交 1,否则将提交 0 无论我有没有检查,它总是捕获“0”。你能更正我上面的代码并告诉我怎么做吗? 正确,当控件(表单域)不成功时脚本在此处无济于事(并且复选框仅在选中时才成功)。请参阅:successful controls。我的建议使用隐藏的输入(0)默认,并且检查复选框(1)时,它将覆盖隐藏的输入。不需要脚本。【参考方案2】:这一行
if (document.getElementById('binary').checked = true)
应该是
if (document.getElementById('binary').checked == true)
或
if (!!document.getElementById('binary').checked)
没有?
【讨论】:
有趣的转换为布尔值。没有多少人像这样使用它 你可以阅读this answer了解更多详情:-)以上是关于未正确捕获表单数据的主要内容,如果未能解决你的问题,请参考以下文章