使用复选框在PHP表单上工作的第一个计时器。这些方法都在我的其他输入上工作,但我显然不了解如何处理数组。我希望在刷新/提交时检查复选框,因此用户不必重新执行,并且我尝试验证所有表单值以防止注入。
这里是输入:
<div>
<p>
<input type="checkbox" name="project[]" id="project-type1" value="type1" <?php if ((isset($project)) && (in_array( 'type1', $project))) {echo 'checked="checked"';} ?>/>Type 1</p>
<p>
<input type="checkbox" name="project[]" id="project-type2" value="type2" <?php if ((isset($project)) && (in_array( "type2", $project))) {echo 'checked="checked"';} ?>/>Type 2</p>
<p>
<input type="checkbox" name="project[]" id="project-type3" value="type3" <?php if ((isset($project)) && (in_array( "type3", $project))) {echo 'checked="checked"';} ?>/>Type 3</p>
<p>
<div class="error" id="error-project">
<?php if (isset($err_project)) { echo $err_project; } ?>
<?php if (isset($err_project2)) { echo $err_project2; } ?>
</div>
</p>
</div>
在这里,我试图修剪,消毒并回显复选框数据:
if (isset($_POST['project'])) {
$trimmed_project = array_map('trim', ($_POST['project']));
$project = filter_var($trimmed_project, FILTER_SANITIZE_STRING); }
在这里,我确认只有字母,空格和&amp;允许提交逗号:
if ( !(preg_match('/^([A-Za-z\ \,]+)$/', $project)) ) : $err_project2 = "
<p>Project Type value is invalid.</p>"; endif;
有人可以帮助我指出正确的方向吗?
答案 0 :(得分:0)
您无法使用PHP在页面重新加载时检查复选框;但是,您可以使用jquery和cookie来解决这个问题。您可以使用下面的示例代码并根据您的需要使用它。有些浏览器不允许离线cookie,因此如果您正在测试此离线使用IE,它应该可以工作。这样你就可以玩它并找出它最适合你的方式。
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Persist checkboxes</title>
<style>
button{
margin-top:8px;
}
</style>
</head>
<body>
<div>
<label for="option1">Option 1</label>
<input type="checkbox" id="option1">
</div>
<div>
<label for="option2">Option 2</label>
<input type="checkbox" id="option2">
</div>
<div>
<label for="option3">Option 3</label>
<input type="checkbox" id="option3">
</div>
<button>Check all</button>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="http://cdn.jsdelivr.net/jquery.cookie/1.4.0/jquery.cookie.min.js"></script>
<script>
function handleButtonClick(button){
if ($(button).text().match("Check all")){
$(":checkbox").prop("checked", true)
} else {
$(":checkbox").prop("checked", false)
};
updateButtonStatus();
}
function updateButtonStatus(){
var allChecked = $(":checkbox").length === $(":checkbox:checked").length;
$("button").text(allChecked? "Uncheck all" : "Check all");
}
function updateCookie(){
var elementValues = {};
$(":checkbox").each(function(){
elementValues[this.id] = this.checked;
});
elementValues["buttonText"] = $("button").text();
$.cookie('elementValues', elementValues, { expires: 7, path: '/' })
}
function repopulateFormELements(){
var elementValues = $.cookie('elementValues');
if(elementValues){
Object.keys(elementValues).forEach(function(element) {
var checked = elementValues[element];
$("#" + element).prop('checked', checked);
});
$("button").text(elementValues["buttonText"])
}
}
$(":checkbox").on("change", function(){
updateButtonStatus();
updateCookie();
});
$("button").on("click", function() {
handleButtonClick(this);
updateCookie();
});
$.cookie.json = true;
repopulateFormELements();
</script>