【问题标题】:how to keep mark dynamically check boxes values after form submit表单提交后如何动态保留标记复选框值
【发布时间】:2014-11-19 08:23:08
【问题描述】:

我正在处理动态复选框和复选框值正在从 mysql 数据库中获取,并且复选框值也在此处提交表单后存储到 db 表中,一切正常

问题是,当我单击复选框时,所有复选框值都被标记并选中,但我希望当我单击单个复选框值时,函数应该标记或检查已选中的值而不应该标记所有复选框值?

mysql数据库查询

 function select_user_permissions(){

 global $data;

 $result=db_rows(

 "SELECT * FROM `{$data['DbPrefix']}permissions` order by pid");

 return $result;

 }

function select_user_id_permissions(){

global $data;
$adminid=$_REQUEST['userid'];
$result=("SELECT * FROM `{$data['DbPrefix']}user_permission` 
where permuserid='$adminid' ");


return $result;
}



$post['select_user']=select_user_permissions();
$post['select_user_perm']=select_user_id_permissions();


<form name="my_form" method=post>

<? 
foreach($post['select_user'] as $key => $values){
?>
<input type=checkbox name=userperm[] value=<?=$values['pid']?> 
<?php if($post['userperm']) { echo " checked=checked'"; } ?>>

<label for="<?=$values['permname']?>"><?=$values['permname']?></label>
<? } ?>

<input class=submit type=submit name=send value="SAVE CHANGES">
</form>

我在这里找到了解决方案

<script src='http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js'>

<SCRIPT LANGUAGE="JavaScript">

function Check(chk)
{
if(document.myform.Check_ctr.checked==true){
for (i = 0; i < chk.length; i++)
chk[i].checked = true ;
}else{

for (i = 0; i < chk.length; i++)
chk[i].checked = false ;
}
}

// End -->
</script>

<?php
echo "the following values have been checked: ";
$checked="";
$a = array();
if(isset($_POST["userperm"])) {
    foreach($_POST["userperm"] as $j=>$i) {
        $checked .= ($checked==""?"":",") . "checkbox" . $i;
        array_push($a, $i);
    }
}
echo $checked;

function was_checked($i,$a) {
if(in_array($i, $a)===true) {
return "checked='checked'";
return "";
}
}
?>

<? 
foreach($post['select_user'] as $key => $values){

?>
<input type=checkbox name=userperm[] value=<?=$values['pid']?>
<?=was_checked($values['pid'],$a)?>>
<label for="<?=$values['permname']?>"><?=$values['permname']?></label>
<? } ?>

【问题讨论】:

    标签: javascript php jquery forms checkbox


    【解决方案1】:

    你应该创建一个数组 $arrUserDtls["userid"] = {user_permission_name}。

    而不是

    <?php if($post['userperm']) { echo " checked=checked'"; } ?>>
    

    请使用这个:

    <?php if($arrUserDtls[$values] == $values['permname']) { echo " checked=checked'"; } ?>>
    

    【讨论】:

    • 但问题是表单提交后标记和检查的所有复选框值?我只想标记标记或选中的值...
    • $arrUserDtls 数组应该只包含用户 ID 和相关权限名称,这样当条件满足 "$arrUserDtls[$values] == $values['permname']" 时它会显示已检查
    【解决方案2】:

    我不确定逻辑,但您在 checked= 之后缺少单引号

    <?php if($post['userperm']) { echo " checked='checked'"; } ?>>
    

    另外,恐怕for="&lt;?=$values['permname']?&gt;" 会被视为字符串,而不是代码。

    <label <?php echo "for='" . $values['permname'] . "'"; ?>><?=$values['permname']?></label>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-15
      • 2019-09-11
      • 1970-01-01
      相关资源
      最近更新 更多