<html>
<script type='text/javascript' src='jquery.js'></script>
<script type='text/javascript'>
<?php
// this sets variables sot session for nodeid
$nid = 1;//$_GET["nnid"];
session_start();
$_SESSION['sesnodid']=$nid;
?>
var array;
$(document).ready(function (){
$('#itemsOnPageDiv input:checkbox').click(function(event){
var obj = [];
$('#itemsOnPageDiv input[type=checkbox]:checked').each(function(index, value){
obj.push($(this).attr("value"));
alert($(this).attr("value")+" added to array");
});
array = JSON.stringify(obj);
});
});
$(document).ready(function(){
$("#cl").click(function(){
$.post('buildUserPage.php', { array : array },
function(output){
$('#debug').html(output).show();
});
alert(array);
});
});
</script>
<div id="itemsOnPageDiv">
<?php
include("hawkfunctions.php");
newPageCheckBoxBuider();
$user_page_cell_info = getUserPageCellInfo($nid);
$i = 0;
echo "<script>";
while($i < count($user_page_cell_info)){
echo "
alert('Clicking ".$user_page_cell_info[$i]['tag_id']."');
\$(document).ready(function(){
\$('#".trim($user_page_cell_info[$i]['tag_id'])."').trigger('click');
});";
$i++;
}
echo "</script>";
?>
</div>
<button id="cl">Save</button>
<div id = 'debug'></div>
</html>
行。我有一个从sql db构建的复选框列表。我使用php编写jquery,根据db中的数据获取正确的“已检查”框。然后我让这个脚本“点击”所需的复选框。然后每次“点击”填充一个数组。此数组将包含jquery“clicked”框所需的数据以及用户选中或取消选中的任何框。此数组将由另一个php脚本用于根据检查的框中的更改来更改数据库。
问题在于:
应该检查正确检查的框,但是。应该填充的数组无法始终正确填充。最明显的是,如果最初只选中其中一个复选框,则该数组为空。用户取消选中然后再次检查似乎解决了这个问题,但显然这并不理想。有时,当选中2时,其中一个复选框数据不会进入数组。过去的任何金额似乎都可以。
答案 0 :(得分:0)
单击复选框是不明确的。有时它可以工作 - 有时它不工作。这是一种不可靠的方法。如果已经检查过,它将取消选中它。
正确的方法是使用.prop函数或.attr()(参见辩论here)
$('#".trim($user_page_cell_info[$i]['tag_id'])."').prop("checked", true)
虽然我们在这里,但这里有一些提示。
分隔文件。 PHP / HTML / JS / CSS不应该在一起(为清楚起见)
据我所知..每次点击一个复选框,它都会重建你的复选框JSON ......然后什么都不做。因此,如果我单击3个框,它将查询文档3次以构造JSON。你应该只在有人点击$(“#cl”)按钮时才这样做。
不要将数组命名为“array”。试着把它命名为更清楚的东西,比如,checkbox_array。