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

时间:2017-08-07 18:27:06

标签: javascript jquery forms checkbox

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

我尝试添加一个具有相同名称的隐藏复选框,但是当选中可见复选框时,电子邮件会收到两个回复,从而导致电子邮件混乱。

单选按钮不是答案,因为我只是希望用户看到一个复选框并检查它(或不是!)

fyi,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;" />

1 个答案:

答案 0 :(得分:2)

以下是如何使用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/