javascript提交未选中复选框的默认值

Posted

技术标签:

【中文标题】javascript提交未选中复选框的默认值【英文标题】:javascript submit default value for unchecked checkboxes 【发布时间】:2018-01-15 03:31:50 【问题描述】:

在我的表单中,我有一系列复选框供用户同意某些事情。我不需要他们检查全部或任何特定的,但我确实需要电子邮件的收件人轻松分辨哪些未检查(他们不同意的条款)

我尝试添加具有相同名称的隐藏复选框,但在选中可见的复选框时,电子邮件获取两个响应,导致令人困惑的电子邮件。

单选按钮不是答案,因为我只想让用户看到一个复选框并选中它(或不选中它!)

仅供参考,php 不是可用的选项。我更喜欢 javascript 或 jquery。

我不擅长 javascript,但我尝试了以下操作,但没有成功(当检查可见响应时,它发送了两个响应):

<input type="hidden" name="Name1" id="Hidden1" value="NOT ANSWERED" checked />
<input type="checkbox" name="Name1" id="Visible1" value="Yes" onchange="document.getElementById('Hidden1').checked = false;" />

【问题讨论】:

你必须从服务器发送这封电子邮件的地方,这就是你应该处理这个问题的地方,而不是通过添加许多不必要的东西在客户端,因为你的服务器端代码无法处理像这样简单的事情几个复选框。 你说得对,它应该在服务器端完成,但我不想这样做 - 他们有一个脚本可以处理所有表单,所以我不想碰它。我最终编写了一个脚本来在表单和他们的脚本之间切换,并且能够使其工作 - 但它很丑陋。我真的认为使用 javascript 可能有一种更简单、更优雅的方法。 【参考方案1】:

这是一个示例,说明如何使用data 属性为未检查的输入获取默认值。

html

<form id="form">
  <input type="checkbox" name="terms_1" data-unchecked-value="not-agree" value="agree" checked />
  <input type="checkbox" name="terms_2" data-unchecked-value="not-agree" value="agree" />
  <button type="submit">
    submit
  </button>
</form>

JS

var form = document.querySelector('#form')

function getValue(node) 
  return node.checked ? node.value : node.dataset.uncheckedValue


form.addEventListener('submit', function(event) 
  event.preventDefault();

  var terms1 = getValue(this.terms_1)
  var terms2 = getValue(this.terms_2)

  console.log(terms1, terms2)
)

JSFiddle 演示:https://jsfiddle.net/Lo6g7so5/1/

【讨论】:

谢谢 - 我看到这在控制台中工作,但我如何让它提交到我的表单脚本? (我事先承认我不擅长 javascript -对不起!)

以上是关于javascript提交未选中复选框的默认值的主要内容,如果未能解决你的问题,请参考以下文章

如果提交表单时未选中复选框,如何将布尔值更新为 0

强制复选框始终提交,即使未选中

如何提交未选中复选框的值

如果未选中复选框,如何提交 0,如果在 HTML 中选中复选框,如何提交 1 [重复]

如果 php 和 jQuery 选中或未选中,则在 php 中动态创建复选框值

未选中复选框时发布复选框值[重复]