Флажок Выбранный атрибут установлен независимо от значения - PullRequest
0 голосов
/ 24 октября 2011

Попробуйте это дома:
Напишите форму для отображения списка флажков в 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>";

Вы обнаружите, что независимо от того, что вы положили в назначение $ checkVal, когда вы нажмете submit, все ваши флажки будут отмечены. Мой обходной путь - расширить переменную $ checkVal, чтобы присвоить всему статусу «selected =» значение «что-то или ничего». Я просто удивлен, что 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>

И о чудо! Каждый флажок отмечен. Вопреки тому, что я явно выразил в HTML.

1 Ответ

2 голосов
/ 24 октября 2011

Ложь игнорируется. Если атрибут проверки существует, флажок установлен.

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...