如何保持数组和动态复选框在提交后保持选中状态?
How to Keep an array and dynamic Checkbox stays checked after submit?
我有一个动态复选框(可以是 ++)需要在用户提交后保持选中状态。
我已经尝试了一些技巧,例如在 HTML 中的复选框代码之前使用隐藏输入。现在我坚持执行 isset(_POST) 并且复选框没有保持选中状态。
这是我的 HTML:
<input type="hidden" name="hidden_name[]" id="hidden_name0">
<input type="checkbox" name ="name[]" id="name0">
<label for="name">Name</label>
--------更新--------
在我的 PHP 文件中,代码如下:
$valueName = array();
if(isset($_POST["hidden_name"]))
{
foreach($_GET['hidden_name'] as $value)
{
array_push($valueName,$value);
}
}
该代码无效:/
如何让复选框在用户选中并提交表单后保持选中状态? PHP 应该写什么?我真的需要在复选框前隐藏输入吗?
我假设您有一个包含一些复选框的表单,并尝试检查选中了哪个复选框。这是一个示例代码
<form action="" method="post">
<label for="name">Name 1</label>
<input type="checkbox" name ="name[]" value="name1">
<label for="name">Name 2</label>
<input type="checkbox" name ="name[]" value="name2">
<label for="name">Name 3</label>
<input type="checkbox" name ="name[]" value="name3">
<label for="name">Name 4</label>
<input type="checkbox" name ="name[]" value="name4">
<button type="submit" name="submit">Submit</button>
</form>
和php代码
<?php
if(isset($_POST["submit"])){
$valueName = array();
foreach($_POST['name'] as $value){
array_push($valueName,$value);
print_r($valueName);
}
?>
isset 可能会返回 false,因为提交的值为 NULL。我建议在隐藏的输入字段上添加一个 value='1'
——或者您是否使用相应的复选框值更新该字段?
或者,您还有一些其他选择:
将每个动态复选框的 name
更改为具有标识符。
<input type="checkbox" name="name-x" <?php echo isset( $_POST['name-x'] ) ? 'checked="checked"' : '' ?> />
其中 x
可能是您的动态 ID。注意添加 PHP 代码并使用三元运算符,如果设置了 $_POST['name-x']
,您可以选中该复选框。
为复选框添加一个值。
<input type="checkbox" name="name[]" id="name0" value="name0" />
<input type="checkbox" name="name[]" id="name1" value="name1" />
<input type="checkbox" name="name[]" id="name2" value="name2" />
但是,您需要在 PHP 代码中匹配此值。
<?php
if ( isset( $_POST['name'] ) ) {
$values = array();
foreach( $_POST['name'] as $value ) {
array_push( $values, $value );
}
}
?>
然后您必须再次修改您的复选框以具有内联 PHP。
<input type="checkbox" name="name[]" id="name0" value="name0" <?php echo in_array( "name0", $values ) ? 'checked="checked"' : '' ?> />
<input type="checkbox" name="name[]" id="name1" value="name1" <?php echo in_array( "name1", $values ) ? 'checked="checked"' : '' ?> />
<input type="checkbox" name="name[]" id="name2" value="name2" <?php echo in_array( "name2", $values ) ? 'checked="checked"' : '' ?> />
您还可以创建一个函数来显示这些内联代码,使其更加清晰。 HTH!
我有一个动态复选框(可以是 ++)需要在用户提交后保持选中状态。
我已经尝试了一些技巧,例如在 HTML 中的复选框代码之前使用隐藏输入。现在我坚持执行 isset(_POST) 并且复选框没有保持选中状态。
这是我的 HTML:
<input type="hidden" name="hidden_name[]" id="hidden_name0">
<input type="checkbox" name ="name[]" id="name0">
<label for="name">Name</label>
--------更新-------- 在我的 PHP 文件中,代码如下:
$valueName = array();
if(isset($_POST["hidden_name"]))
{
foreach($_GET['hidden_name'] as $value)
{
array_push($valueName,$value);
}
}
该代码无效:/
如何让复选框在用户选中并提交表单后保持选中状态? PHP 应该写什么?我真的需要在复选框前隐藏输入吗?
我假设您有一个包含一些复选框的表单,并尝试检查选中了哪个复选框。这是一个示例代码
<form action="" method="post">
<label for="name">Name 1</label>
<input type="checkbox" name ="name[]" value="name1">
<label for="name">Name 2</label>
<input type="checkbox" name ="name[]" value="name2">
<label for="name">Name 3</label>
<input type="checkbox" name ="name[]" value="name3">
<label for="name">Name 4</label>
<input type="checkbox" name ="name[]" value="name4">
<button type="submit" name="submit">Submit</button>
</form>
和php代码
<?php
if(isset($_POST["submit"])){
$valueName = array();
foreach($_POST['name'] as $value){
array_push($valueName,$value);
print_r($valueName);
}
?>
isset 可能会返回 false,因为提交的值为 NULL。我建议在隐藏的输入字段上添加一个 value='1'
——或者您是否使用相应的复选框值更新该字段?
或者,您还有一些其他选择:
将每个动态复选框的
name
更改为具有标识符。<input type="checkbox" name="name-x" <?php echo isset( $_POST['name-x'] ) ? 'checked="checked"' : '' ?> />
其中
x
可能是您的动态 ID。注意添加 PHP 代码并使用三元运算符,如果设置了$_POST['name-x']
,您可以选中该复选框。为复选框添加一个值。
<input type="checkbox" name="name[]" id="name0" value="name0" /> <input type="checkbox" name="name[]" id="name1" value="name1" /> <input type="checkbox" name="name[]" id="name2" value="name2" />
但是,您需要在 PHP 代码中匹配此值。
<?php if ( isset( $_POST['name'] ) ) { $values = array(); foreach( $_POST['name'] as $value ) { array_push( $values, $value ); } } ?>
然后您必须再次修改您的复选框以具有内联 PHP。
<input type="checkbox" name="name[]" id="name0" value="name0" <?php echo in_array( "name0", $values ) ? 'checked="checked"' : '' ?> /> <input type="checkbox" name="name[]" id="name1" value="name1" <?php echo in_array( "name1", $values ) ? 'checked="checked"' : '' ?> /> <input type="checkbox" name="name[]" id="name2" value="name2" <?php echo in_array( "name2", $values ) ? 'checked="checked"' : '' ?> />
您还可以创建一个函数来显示这些内联代码,使其更加清晰。 HTH!