【问题标题】:How to submit all checkbox fields in the form?如何提交表单中的所有复选框字段?
【发布时间】:2016-04-04 19:53:30
【问题描述】:

我的表格带有复选框列表。如果复选框被选中,则值设置为 0,如果未选中,则值为 -1。我当前的代码仅在选中复选框时才提交复选框。每次点击保存按钮时,我都想提交表单中的所有复选框。有什么办法可以做到吗?这是我的代码:

HTML:

<input type="checkbox" name="user" value="~(user_ID)" class="chkBlock" />

jQuery:

//This code switch value based on if check box is checked or not
$j('.chkBlock').click(function(){
     $j(this).val(this.checked ? 0:-1);
});

并且此代码根据 DB 中的值设置复选框状态:

$j( document ).ready(function() {
    $j('input.chkBlock[value="0"]').prop("checked", true);
    $j('input.chkBlock[value="-1"]').prop("checked", false);
    $j('input.chkBlock[value=""]').prop("checked", false);
});

我当前的代码仅在检查后才提交值。

【问题讨论】:

  • 这就是复选框的工作方式。如果仅在检查时给出一个值。如果您不使用 JavaScript,也会发生这种情况。所以实际上你甚至不需要检查 0 或 -1。只要值的存在就会告诉你它是否被选中。接受这种行为,而不是试图解决它。
  • 那么,如果我在未选中复选框时必须设置不同的值,我该如何避免解决?如果我不能提交未选中的复选框,我将如何将该值保存在数据库中?您还有其他推荐的方法吗?
  • 在服务器上检查该值是否存在。例如,如果它是 PHP,请执行以下操作:$userChecked = isset($_GET['user']);。在这一行之后,$userChecked 是一个布尔值,表示复选框 user 是否被选中。
  • 我同意 showdev 它是重复的,但我不喜欢添加隐藏字段和一堆 JavaScript 的最常见建议解决方案。这样做有很多工作量和潜在风险,而且没有必要。

标签: javascript jquery html forms checkbox


【解决方案1】:
var boxes=new Array();
$(".chkBlock").each(
function()
{
  if( $(this).prop("checked") )
  {
      boxes.push( $(this).prop("name")+"[]="+$(this).val() );
  }
  else
  {
      boxes.push( $(this).prop("name")+"[]=0" );
  }
});
console.log( boxes.join("&") );

我在没有测试的情况下写了上面的内容 - 我要睡觉了,但我想我会给你一些思考的东西。

我相信我上面写的代码会循环遍历所有带有 chkBlock 类的标签,如果属性检查为真,那么它将附加框的名称、双方括号、等号和框的值.

如果检查不正确,则检查仍然通过,但值为零。

已编辑:[] 表示复选框作为数组发送到服务器。检查控制台日志以获取示例数据。

我希望这对你有所帮助......或者至少,我希望它不会混淆。

【讨论】:

  • 感谢这个例子。我认为这对我有帮助。
【解决方案2】:

虽然这不是您帖子的确切答案。这个问题以不同的形式多次出现。到目前为止,下面链接中的方法似乎是一个不错的解决方案。

Post the checkboxes that are unchecked

【讨论】:

  • 如果问题在其他地方得到回答,请将其标记为重复。如果你不能忍受它,直到你有足够的代表。发布指向其他问题的链接作为答案不是正确的方法。
  • 对不起,我是新来的,我没有足够的代表来标记为重复。只是想帮助那个人。我本可以从另一篇文章中复制答案,但我觉得这也不对。你能把它标记为重复吗?
猜你喜欢
  • 2013-01-27
  • 2017-09-19
  • 2012-02-29
  • 2018-06-16
  • 1970-01-01
  • 2014-04-04
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
相关资源
最近更新 更多