2017-08-07 71 views
0

在我的表单提交默认值,我有一系列的复选框,为用户同意某些事情。我不需要他们来检查他们的全部或任何一种特定的,但我确实需要的电子邮件的收件人可以轻松地分辨出哪是不检查的人(他们而言不同意)的javascript选中复选框

我曾尝试加入隐藏的复选框具有相同的名称,但是当可见复选框被选中时,电子邮件会得到两个响应,从而导致邮件混乱。

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

仅供参考,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;" /> 
+0

某处你必须从一台服务器发送该邮件,而这也正是你应该处理这个问题,不通过添加大量的不必要的东西的客户方,因为你的服务器端代码无法处理一些简单的几个复选框。 – adeneo

+0

你说得对,它应该做服务器端,但我不想这样做 - 他们有一个剧本,所以我不想去触摸它用于处理其所有形式。我最后写一个脚本的形式和他们的脚本之间去,并能使其工作 - 但它的丑陋。我真的认为可能有一个更容易和更优雅的方式来做到这一点与JavaScript。 – KSechrist

回答

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/

+0

谢谢 - 我看到这在控制台中工作,但我怎么得到它提交给我的表单脚本? (我承认前面我不擅长javascript -sorry!) – KSechrist