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

javascript提交未选中复选框的默认值,javascript,jquery,forms,checkbox,Javascript,Jquery,Forms,Checkbox,在我的表单中,我有一系列复选框供用户同意某些事情。我不需要他们检查所有或任何特定的邮件,但我需要邮件收件人轻松地告诉我哪些邮件没有检查(他们不同意的条款) 我曾尝试添加一个同名的隐藏复选框,但当选中“可见”复选框时,电子邮件会同时收到两个响应,导致电子邮件混乱 单选按钮不是答案,因为我只想让用户看到一个复选框并选中它(或者不选中!) 仅供参考,php不是一个可用选项。我更喜欢javascript或jquery 我不擅长使用javascript,但我尝试了以下方法,但没有成功(当选中可见响应时,它

在我的表单中,我有一系列复选框供用户同意某些事情。我不需要他们检查所有或任何特定的邮件,但我需要邮件收件人轻松地告诉我哪些邮件没有检查(他们不同意的条款)

我曾尝试添加一个同名的隐藏复选框,但当选中“可见”复选框时,电子邮件会同时收到两个响应,导致电子邮件混乱

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

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

我不擅长使用javascript,但我尝试了以下方法,但没有成功(当选中可见响应时,它发送了两个响应):


以下是一个示例,说明如何使用
数据
属性获取未检查输入的默认值

HTML


jsiddle演示:

下面是一个示例,说明如何使用
数据属性为未检查的输入获取默认值

HTML


jsFIDLE demo:

您必须从服务器发送此电子邮件,而这正是您应该处理此问题的地方,而不是在客户端添加大量不必要的内容,因为您的服务器端代码无法处理像几个复选框这样简单的事情。您是对的,应该在服务器端完成,但我不想这样做——他们有一个脚本可以处理所有表单,所以我不想碰它。我最终写了一个脚本,在表单和他们的脚本之间穿行,并且能够让它工作——但是它很难看。我真的认为使用javascript可能会有一种更简单、更优雅的方法。在某个地方,你必须从服务器发送这封电子邮件,这是你应该处理的地方,而不是在客户端添加很多不必要的东西,因为你的服务器端代码无法处理像几个复选框这样简单的事情。你是对的,应该在服务器端完成,但我不想这样做——他们有一个脚本可以处理所有表单,所以我不想碰它。我最终写了一个脚本,在表单和他们的脚本之间穿行,并且能够让它工作——但是它很难看。我真的认为可能有一种更简单、更优雅的方式来使用javascript实现这一点。谢谢-我看到它在控制台中工作,但如何让它提交到我的表单脚本?(我承认我不擅长javascript-抱歉!)谢谢-我在控制台中看到了这一点,但如何让它提交到我的表单脚本?(我承认我不擅长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;" />
<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>
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)
})