【发布时间】:2015-02-25 20:23:03
【问题描述】:
我有一个具有一组用户权限的用户编辑页面。每个权限基本上都是一个复选框。勾选表示用户有权限,不勾选表示用户没有权限。因此,如果我想删除权限,我会取消选中该框,反之亦然以添加权限。
我使用隐藏输入让一切正常工作,但我遇到的问题是它同时提交了隐藏输入和复选框值。例如,即使我不进行更改并单击更新按钮,我也会收到一条消息:
Removed access from 1 permission levels
Added access to 1 permission levels
我将在下面向您展示我的代码。需要记住的是,每个输入调用不同的函数。
这里是输入:
<ul class="list-group permission-summary-rows">
<?php //List of permission levels user is apart of
foreach ($permissionData as $v1) {
if(isset($userPermission[$v1['id']])){
?>
<li class="list-group-item">
<?php echo $v1['name']; ?>
<span class="pull-right">
<input type="hidden" name="removePermission[<?php echo $v1['id'] ?>]" id="removePermission[<?php echo $v1['id'] ?>]" value="<?php echo $v1['id'] ?>" >
<input type="checkbox" checked data-toggle="switch" name="addPermission[<?php echo $v1['id'] ?>]" id="addPermission[<?php echo $v1['id'] ?>]" value="<?php echo $v1['id'] ?>" >
</span>
</li>
<?php
}
}
?>
<?php //List of permission levels user is not apart of
foreach ($permissionData as $v1) {
if(!isset($userPermission[$v1['id']])){
?>
<li class="list-group-item">
<?php echo $v1['name']; ?>
<span class="pull-right">
<input type="checkbox" data-toggle="switch" name="addPermission[<?php echo $v1['id'] ?>]" id="addPermission[<?php echo $v1['id'] ?>]" value="<?php echo $v1['id'] ?>" >
</span>
</li>
<?php
}
}
?>
这里是 PHP:
//Remove permission level
if(!empty($_POST['removePermission'])) {
$remove = $_POST['removePermission'];
if ($deletion_count = removePermission($remove, $userId)) {
$successes[] = lang("ACCOUNT_PERMISSION_REMOVED", array ($deletion_count));
} else {
$errors[] = lang("SQL_ERROR");
}
}
// Add permission level
if(!empty($_POST['addPermission'])) {
$add = $_POST['addPermission'];
if ($addition_count = addPermission($add, $userId)) {
$successes[] = lang("ACCOUNT_PERMISSION_ADDED", array ($addition_count));
} else {
$errors[] = lang("SQL_ERROR");
}
}
即使我在复选框输入下方添加隐藏输入,我也会收到相同的消息。我知道这与使用不同的功能有关,所以任何人都可以引导我朝着正确的方向前进吗?我应该使用一些 JS 代码来查找它是否被选中?
【问题讨论】:
-
未选中的复选框和单选按钮不会提交。
-
我知道这就是我使用隐藏输入的原因,但问题是它同时提交了隐藏和复选框。我只希望它在未选中或选中该框的情况下提交。例如,默认情况下选中该框,因为用户拥有权限,所以如果他们取消选中它,我希望它只提交隐藏的输入。
-
您可以在提交后,删除数据库中该用户的所有权限,然后添加已提交的权限。
标签: javascript php jquery html checkbox