您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

怎样才能获取checkbox选择的值?

2024/3/21 4:54:05发布27次查看
这是前台页面,其中“所在部门”和“副职姓名”是jquery从另一个页面get的数据,返回的就是下面的checkbox。我试了一下,从这个页面用js好像找不到这些checkbox,所以只有用php来做了,但是做不出来,下面是部分代码:user是checkbox的name。
$user=$_post['user'];  
$arr=array();  
$darr=array();  
$darr=  array_diff($arr,$user);  
            if(!empty($user)){  
                 for($i=0;$i<count($user);$i++){
if($user=="checked")
//echo "<script>alert('dfh')</script>;  
                $db->query(update members set fuchu='.$_post['fuchu'].' where uid='.$user[$i].');  
                }   
            }
if(!empty($darr)){  
                for($j=0;$j<=count($darr);$j++){
$rowf=$db->get_one(select * from members where fuchu=.$_post['fuchu']);  
                    if($darr[$j]==$rowf['uid'])  
                        unset($darr[$j]);  
                    else  
                        $db->query(update members set fuchu='0' where uid='.$darr[$j].');  
                }  
            }
我是用的array_diff方法,将选中的和没选中的checkbox区分开来。但是我试了好多遍,主要问题是$_post['user']返回的是点击的数据,无论是否选中,这样的话如果原来是选中的,我想取消选中的话就做不到,如何能挑出取消选中的数据?
回复讨论(解决方案)请贴出 html 代码,以甄别数据是以何种方式提交的
或者你 print_r($_post); 贴出结果
请贴出 html 代码,以甄别数据是以何种方式提交的
或者你 print_r($_post); 贴出结果
print_r($_post); 显示的结果是两个select的值,没什么用。  
array ( [depart] => 2 [fuchu] => 112 [submit] => 提交 )
这是获取checkbox的jquery代码  
 //city onchange  
            $('#fuchu').change(function() {     
              var city = $(this).val();  
              var province=$(#depart).val();  
              $.get(getdepart.php, {category:'user', city:city,province:province}, function(data) {     
                $('#result').html(data);     
                //alert (data);  
              });     
            });
这是html代码  
if($_request[city]!=){  
            $sql=select * from members left join userclass on members.flag=userclass.flagid where admitright=4 and groupid=.$_request['province'];  
            $result=$db->query($sql);  
            $str=;  
            if ($db->num_rows($result) > 0) {  
                while ($row =$db->fetch_array($result)) {  
                    if($row['fuchu']==$_request['city']){  
                        $str.= $row['username'];  
                        $str.= <input type='checkbox' id='user' checked='true name='user[]' value=".$row['uid']."> ;  
                    }else{  
                        $str.= $row['username'];  
                        $str.= <input type='checkbox' id='user' name='user[]' value=".$row['uid']."> ;  
                    }
}  
              }
mysql_free_result($result);   
        }
提交的数据 array ( [depart] => 2 [fuchu] => 112 [submit] => 提交 ) 中并没有 user 项  
没有被提交,那自然也就无法处理
#2 下半部只是 php 生成复选框串的代码,并不表示复选框就一定放进表单里去了
提交的数据 array ( [depart] => 2 [fuchu] => 112 [submit] => 提交 ) 中并没有 user 项  
没有被提交,那自然也就无法处理
#2 下半部只是 php 生成复选框串的代码,并不表示复选框就一定放进表单里去了
那为什么print_r($user)和print_r($darr)有数据?
提交的数据 array ( [depart] => 2 [fuchu] => 112 [submit] => 提交 ) 中并没有 user 项  
没有被提交,那自然也就无法处理
#2 下半部只是 php 生成复选框串的代码,并不表示复选框就一定放进表单里去了
那这样的页面形式用什么办法更合适一些?
你是这样使用提交的数据的:$user=$_post['user'];  
如果 print_r($_post); 只显示 array ( [depart] => 2 [fuchu] => 112 [submit] => 提交 )  
你怎么去用 $user ???
你是这样使用提交的数据的:$user=$_post['user'];  
如果 print_r($_post); 只显示 array ( [depart] => 2 [fuchu] => 112 [submit] => 提交 )  
你怎么去用 $user ???
我这段代码是在if(isset($_post['user'])中的,里面的代码可以运行
你是这样使用提交的数据的:$user=$_post['user'];  
如果 print_r($_post); 只显示 array ( [depart] => 2 [fuchu] => 112 [submit] => 提交 )  
你怎么去用 $user ???
知道了,只有选中checkbox之后才有内容:  
array ( [1] => 117 ) array ( [depart] => 2 [fuchu] => 112 [user] => array ( [0] => 124 ) [submit] => 提交 )
你是这样使用提交的数据的:$user=$_post['user'];  
如果 print_r($_post); 只显示 array ( [depart] => 2 [fuchu] => 112 [submit] => 提交 )  
你怎么去用 $user ???
现在的问题是取消选中没反应?
复选框没有选中,是不会提交的  
也就是说,$_post['user'] 是否有值是要分别处理的
复选框没有选中,是不会提交的  
也就是说,$_post['user'] 是否有值是要分别处理的
但是我用array_diff语句处理后的结果并不是我想要的,不知道哪里出错了,帮忙看看,谢谢了
你是说 $darr=  array_diff($arr,$user); 这个?  
你的 $arr 是一个空数组,不管 $user 数组中有多少元素  
$darr 都是空数组,不知道你要这样做的原因
你是说 $darr=  array_diff($arr,$user); 这个?  
你的 $arr 是一个空数组,不管 $user 数组中有多少元素  
$darr 都是空数组,不知道你要这样做的原因
我换了种方式,把checkbox写到前台,不从后台get了,现在又遇到点问题:
$(#btnsubmit).bind(click, function () {  
                var result = new array();
$([name = user]:checkbox).each(function () {  
                    if ($(this).is(:checked)) {  
                        result.push($(this).attr(value));  
                    }  
                });
$(#hdtxt).val(result.join(,));  
                 var userid=<?php echo $userid; ?>;  
                $(#hdfuchu).val(userid);  
                //alert($(#hdtxt).val());  
                alert(userid);
});
一加上红字这段select就没反应了,删除掉就可以,这是为什么?我在上面echo $userid,可以看到是有值的。而如果把$userid换成一个数字就可以运行,咋回事?
你是说 $darr=  array_diff($arr,$user); 这个?  
你的 $arr 是一个空数组,不管 $user 数组中有多少元素  
$darr 都是空数组,不知道你要这样做的原因
帮忙看看呗,这个项目的最后一点问题了
换一种方式解决了,但是还是不明白为什么$_get来的变量无法赋值到jquery中。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product