POST未选中的HTML复选框

我有一堆默认情况下处于选中状态的复选框。我的用户可能会取消选中某些复选框(如果有),而其余复选框保持选中状态。

有没有什么办法让表单POST所复选框检查,而不是的那些选中?

理查德Near小宇宙2020/03/24 16:28:48

我所做的有些不同。首先,我更改了所有未选中复选框的值。设置为“ 0”,然后全部选中,因此将提交该值。

function checkboxvalues(){
  $("#checkbox-container input:checkbox").each(function({ 
    if($(this).prop("checked")!=true){
      $(this).val("0");
      $(this).prop("checked", true);
    }
  });
}

凯西里2020/03/24 16:28:48

我还喜欢这样的解决方案,即您只发布了一个额外的输入字段,对我来说,使用JavaScript似乎有点不客气。

取决于您使用的后端,将取决于首先输入的内容。

对于使用第一次出现的服务器后端(JSP),您应该执行以下操作。

  <input type="checkbox" value="1" name="checkbox_1"/>
  <input type="hidden" value="0" name="checkbox_1"/>


对于使用最后一次出现的服务器后端(PHP,Rails),您应该执行以下操作。

  <input type="hidden" value="0" name="checkbox_1"/>
  <input type="checkbox" value="1" name="checkbox_1"/>


对于其中所有出现被存储在列表中的数据类型的服务器的后端([]array)。(Python / Zope)

您可以按照自己喜欢的顺序发布信息,只需要尝试从具有checkboxtype属性的输入中获取值即可因此,如果复选框在隐藏元素之前,则列表的第一个索引;如果复选框在隐藏元素之后,则最后一个索引。


对于所有出现的事件都用逗号(ASP.NET / IIS)串联的服务器后端,您将需要使用逗号作为分隔符来创建(列表)数据类型来拆分(分解)字符串。[]

现在,如果复选框在隐藏元素之前,则可以尝试获取列表的第一个索引,如果复选框在隐藏元素之后,则可以获取列表的最后一个索引。

后端参数处理

图片来源

小胖Gil2020/03/24 16:28:48

“我已经采用了服务器方法。似乎工作得很好-谢谢。–reach4thelasers 09年12月1日15:19”我想向业主推荐。如所引用:javascript解决方案取决于服务器处理程序的方式(我没有对其进行检查)

if(!isset($_POST["checkbox"]) or empty($_POST["checkbox"])) $_POST["checkbox"]="something";
Mandy宝儿2020/03/24 16:28:48

我使用香草JavaScript解决了它:

<input type="hidden" name="checkboxName" value="0"><input type="checkbox" onclick="this.previousSibling.value=1-this.previousSibling.value">

请注意,这两个输入元素之间不要有任何空格或换行符!

您可以this.previousSibling.previousSibling用来获取“上部”元素。

使用PHP,您可以检查命名隐藏字段的0(未设置)或1(设置)。

小小2020/03/24 16:28:48

您可以在表单的Submit事件中使用一些Javascript。这就是您所能做的,没有办法让浏览器自行完成。这也意味着您的表单将对没有Javascript的用户破坏。最好是在服务器上知道有哪些复选框,因此可以推断出$_POST未选中发布表单值(在PHP中)中没有的那些复选框