【问题标题】:How to add checkbox to form submission with jquery?如何添加复选框以使用 jquery 提交表单?
【发布时间】:2018-09-03 02:41:37
【问题描述】:

我正在使用 webflow 开发一个小网站,现在必须编写一点点自定义代码。为了简化和总结,我有一个在表单标签之外的复选框。我的目标是编写一些 javascript 代码的 jquery 来“捕获”表单标签外的复选框并将其添加到表单提交中。

这是我想出的,但它仍然无法正常工作。 你有什么想法吗?我对代码很陌生...谢谢:)

我想使用的脚本:(如果有意义?)

<script>

// defines the variable for the form
var form = document.getElementById("reservation");

// add the checkbox with the id of "outsider" to the form submission
document.getElementById("outsider").addEventListener("click", function () {
  form.submit();
});

</script>

编辑:我之前当然做了一些研究,但不能真正理解人们正在谈论的代码片段以及如何将脚本“链接”到我的表单的实际提交按钮。

对于现代浏览器:

var checkedValue = document.querySelector('.outsider:checked').value;

使用 jQuery:

var checkedValue = $('.outsider:checked').val();

纯javascript:

var checkedValue = null; 
    var inputElements = document.getElementsByClassName('outsider');
    for(var i=0; inputElements[i]; ++i){
          if(inputElements[i].checked){
               checkedValue = inputElements[i].value;
               break;
          }
    }

另一个 javascript: 再次,不确定如何将函数链接到我的提交按钮

CheckboxHandler.isChecked = function (checkboxObj) {
  return(checkboxObj.checked == true);
}; 

【问题讨论】:

  • 所以您想在表单提交中添加复选框值或在单击复选框时提交表单,哪个是您的预期结果?
  • @VishalTajPM,谢谢您的回复!确切地说,我想将复选框值添加到表单提交中。预期的结果将是收到一封电子邮件(在我单击“发送”之后)并在我的电子邮件中写下复选框的名称及其值。这是给你的一些截图:) imgur.com/a/PwbTw

标签: jquery forms checkbox


【解决方案1】:

要添加复选框值,您可以添加 hidden 字段以保留 checkbox 的值,因此每当我们更新 checkbox 时,我们都会更新 hidden 字段,代码如下。

var humanizeCheckbox = ['outsider', 'without outsider'];

$('input[name="outsider"]').val(humanizeCheckbox[1]);

$('#check').on('click', function(){
  $('input[name="outsider"]').val($(this).is(':checked') ? humanizeCheckbox[0] : humanizeCheckbox[1])
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" id="check" />
<form action='/' method="GET" >
  <input type="hidden" name="outsider" />
  <input type="text" name="email" />
  <input type="submit" value="Send" />
</form>

【讨论】:

  • 有趣!我看到你在那里做了什么!喜欢它背后的逻辑:)感谢您花时间这样做。我试图将它实现到我的 webflow 项目中,尽管我现在收到的电子邮件显示“局外人”名称,但未检查值“true”。我错过了什么吗?这里再次截图:imgur.com/a/6P7s0
  • 是勾选后还是不勾选?基本上,复选框是布尔值,所以如果有任何人性化的值,我们可以使用它更新hidden 字段,如果你想将默认值设置为hidden,你也可以。我已经更新了代码,请检查一下。
【解决方案2】:

您可以将 jQuery 提交事件添加到您的 form:

$("#reservation").submit(function(evt) {
    //handleChecbox
    $("#inside").val($('.outsider:checked').val());
});

此功能将在您实际提交form 之前运行,但我建议将项目添加到form

【讨论】:

  • 有趣!谢谢拉霍斯!我认为这只是编码事物的一种方式,似乎有很多方法可以实现我们想要的。不幸的是,我仍然无法在我的电子邮件确认中获得价值(无论是否已检查)。我错过了什么?这里有一些截图:imgur.com/a/lG986
  • @anthonysalamin 您能否向我们展示您的 HTML 并说明应该阅读哪些内容以及该值应该放在哪里?
  • 当然是@lajosarpad,这里是外部复选框的 HTML:&lt;input type="checkbox" class="outsider" /&gt; 包含隐藏复选框的表单的 HTML:&lt;script&gt; $("#reservation").submit(function(evt) { //handleCheckbox $("#inside").val($('.outsider:checked').val()); }); &lt;/script&gt; &lt;!--begening of the form--&gt; &lt;form action='/' method="get" id="reservation" &gt; &lt;input type="hidden" id="inside" /&gt; &lt;input type="text" name="email" /&gt; &lt;input type="submit" value="Send" /&gt; &lt;/form&gt; 更多截图:imgur.com/a/kE6DP
  • @anthonysalamin 谢谢。我在这里更改了我的代码以使用您的 ID。如果这不能解决您的问题,那么我恳请您创建一个 JSFiddle,其中包含一个最小、完整、可验证的问题示例,请参见此处:stackoverflow.com/help/mcve 所以我们将在您的实验示例中解决问题,这应该可以帮助您整合解决方案到您的项目中。
  • 好的,谢谢@lajosarpad!这是 jsfiddle 的链接:jsfiddle.net/anthonysalamin/nrx7vbst/9/… 例如,也许我应该生成一个“弹出警报”来查看脚本是否有效,而不是愿意发送电子邮件。你怎么看 ?谢谢你的帮助:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-10
  • 2015-01-30
  • 1970-01-01
  • 2014-04-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多