我有一系列复选框:
<input type="checkbox" id="checkbox35080"></td>
<input type="checkbox" id="checkbox23000"></td>
<input type="checkbox" id="checkbox5000"></td>
<input type="checkbox" id="checkbox7000"></td>
<input type="checkbox" id="checkbox65354"></td>
可以同时检查或不检查它们,因为可以检查某些人而不检查其他人。
我需要做的是检索jQuery或Javascript中所有选中的复选框,将它们的子字符串编号存储为数组中的元素,并将此数组传递给PHP。
所以我编写了这个简短的代码示例,以便在我从jQuery传递它时打印PHP数组:
jQuery代码
function foo()
{
var $substr = "checkbox";
var $id = "";
var $checkedBoxes = new Array();
$("input:checkbox[name=type]:checked").each(function()
{
$id = $(this).attr('id');
checkedBoxes.push($id.substring($substr.length));
});
$("#content").load("file.php", {checkboxes: $checkedBoxes});
}
file.php 中的PHP代码
<?php
if(isset($_POST["checkboxes"]))
{
$checkboxes = json_decode($_POST["checkboxes"], true);
print_r($checkboxes);
}
?>
但是我无法看到输出上打印的数组。 我也尝试过使用 $ _ REQUEST &amp; $ _ GET 方法。没办法,我也不知道自己做错了什么(我不认为jQuery是我的最佳选择)。
我怎样才能完成这项任务?我的代码有什么问题?
提前感谢您的帮助。
答案 0 :(得分:0)
您的代码无效的原因是错误的选择器来定位已检查的元素。它们没有name属性等于type。
您还将数组名称定义为$checkedBoxes
。但是你在每个循环中使用变量checkedBoxes
。你需要使用:
var $substr = "checkbox";
var $id = "";
var $checkedBoxes = new Array();
$("input:checkbox:checked").each(function(){
$id = $(this).attr('id');
$checkedBoxes.push($id.substring($substr.length));
});
<强> Working Demo 强>
但是,您可以使用jquery .map()
函数缩小代码范围:
var $checkedBoxes = $("input:checkbox:checked").map(function() {
return this.id.substring($substr.length);
}).get();
<强> Working Demo with .map()
强>
答案 1 :(得分:0)
不是使用jQuery来实现这一点,而是可以简单地使用HTML / php,因为它完全可以实现您的需求。只需将[]
添加到名称中,它就会生成为'数组'。像这样:
<input type="checkbox" id="checkbox7000" name="checkboxes[7000]"></td>
<input type="checkbox" id="checkbox35080" name="checkboxes[35080]"></td>
<input type="checkbox" id="checkbox23000" name="checkboxes[23000]></td>
<input type="checkbox" id="checkbox5000" name="checkboxes[5000]"></td>
<input type="checkbox" id="checkbox7000" name="checkboxes[7000]"></td>
<input type="checkbox" id="checkbox65354" name="checkboxes[65354]"></td>
这样你可以避免使用jQuery。另外,作为提醒,表单中的值由name=""
提取,而不是id=""
答案 2 :(得分:0)
我发布了解决方案:
HTML代码
<input type="checkbox" name="checkboxPort[]" value="1000">
<input type="checkbox" name="checkboxPort[]" value="1001">
<input type="checkbox" name="checkboxPort[]" value="1002">
<input type="checkbox" name="checkboxPort[]" value="1003">
<input type="checkbox" name="checkboxPort[]" value="1004">
<input type="checkbox" name="checkboxPort[]" value="1005">
jQuery代码
function foo()
{
var $checkedBoxes = new Array();
$("input[name='checkboxPort[]']:checked").each(function()
{
$checkedBoxes.push($(this).val());
});
$("#content").load("file.php", {checkboxes: $checkedBoxes});
}
PHP代码
if(isset($_POST["checkboxes"]))
{
$checkboxes = $_POST["checkboxes"];
print_r($checkboxes)
}
谢谢你们两位!
答案 3 :(得分:0)
在小提琴中找到附带的演示
<强> sql fiddle demo 强>
$(document).ready(function() {
function updateTextArea() {
var allVals = [];
$('#mydiv :checked').each(function () {
allVals.push($(this).val());
});
$('#UserRole').val(allVals);
}
$(function () {
$('#mydiv input').click(updateTextArea);
updateTextArea();
});
});
在这里,我采用了textarea,您可以通过逗号分隔保存和检索textarea中的复选框选择。