Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 复选框“选定属性集”(不考虑值)_Php_Html_Browser - Fatal编程技术网

Php 复选框“选定属性集”(不考虑值)

Php 复选框“选定属性集”(不考虑值),php,html,browser,Php,Html,Browser,在家里试试这个: 编写表单以显示PHP中的复选框列表: $checkboxes = array('one' => 1, 'two' => 2, 'three' => 3); $html = "<html><body><form name=\"myForm\" action=\"this\" method=\"post\"><ul>Check Test"; foreach ($checkboxes as $id => $va

在家里试试这个:
编写表单以显示PHP中的复选框列表:

$checkboxes = array('one' => 1, 'two' => 2, 'three' => 3);
$html = "<html><body><form name=\"myForm\" action=\"this\" method=\"post\"><ul>Check Test";

foreach ($checkboxes as $id => $value)
{
     $checkVal = (isset($_POST['check_test'][$id])) ? 'true' : 'false';
     $checkList = "<li><input type=\"checkbox\" name=\"check_test[]\" id=\"$id\"
                   value =\"$value\" checked=\"$checkVal\" />$name = $value</li>\n";
}
$checkList .= "<input type=\"submit\" value=\"Submit\">";
echo $html.$checkList."</ul></body></html>";
$checkbox=array('1'=>1,'2'=>2,'3'=>3);
$html=“
    检查测试”; foreach($id=>$value的复选框) { $checkVal=(isset($_POST['check_test'][$id])?'true':'false'; $checkList=“
  • $name=$value
  • \n”; } $checkList.=”; echo$html.$checkList.“
”;
您会发现,无论您在$checkVal分配中输入了什么,当您点击提交时,您的复选框都将被选中。我的解决方法是扩展$checkVal变量,将整个“checked=”状态设置为某物或无。我只是惊讶于Firefox(更确切地说,是Iceweasel)只查看属性是否已设置。如果设置的任何内容都不相关,为什么还要设置它

查看源html。所选属性将显示您放入checkval变量中的任何内容。DOM规范说明: checkboxObject.checked=true | false

以下是我的输出:

<ul><li><input type="checkbox" name="check_test[]" id="one"
                       value ="1" checked="false" />one= 1</li>
    <li><input type="checkbox" name="check_test[]" id="two"
                       value ="2" checked="false" />two= 2</li>
    <li><input type="checkbox" name="check_test[]" id="three"
                       value ="3" checked="false" />three= 3</li>
  • one=1
  • 二=2
  • 三=3


瞧!每个框都被选中。与我在html中明确表示的相反。

将忽略false。如果check属性存在,则复选框将被选中

foreach ($checkboxes as $id => $value)
{
     $checkVal = (isset($_POST['check_test'][$id])) ? 'checked="checked"' : '';
     $checkList = "<li><input type=\"checkbox\" name=\"check_test[]\" id=\"$id\"
                   value =\"$value\" ".$checkVal." />$name = $value</li>\n;
}
foreach($id=>$value的复选框)
{
$checkVal=(isset($\u POST['check\u test'][$id])?'checked=“checked”:'';
$checkList=“
  • $name=$value
  • \n; }
    正如我在文章中提到的:“我的解决方法是展开$checkVal变量,将整个“checked=”状态设置为某物或无。“[br]我只是想指出,为什么要有一个“相等”的属性“在DOM中表示无意义的数据吗?没有其他输入属性以这种方式运行。这是一个糟糕的设计,也是一个让人不必再多写2-3行代码的麻烦。Selected不是唯一一个,这是一个更像它的数字。例如是的,它看起来有点糟糕,但我认为它更像是旧浏览器的兼容性问题。对于大多数浏览器,您只需编写selected即可,但如果所有标记属性都以相同的方式显示name=“value”。啊哈,谢谢您的澄清。当我写完我的文章时,我突然想到这可能都是浏览器不兼容造成的。我主要是运行IceWeasel,它应该是Mozilla 5,但它有它的调整和连接。谢谢你的意见!不客气。如果现在一切都清楚了,那么接受问题的答案以结束话题是礼貌的。