Неважно, как они созданы, проблема в том, что disabled
элементы формы вообще не отправляются браузером (что вы могли бы узнать, если бы использовали вкладку «Сеть» инструмента проверки вашего браузера @ см. Снимок экрана ниже). Запустите этот сценарий form.php
, чтобы увидеть, как отправляется <input type="any" disabled="disabled">
( или, скорее, не отправляется ).
disabled
readonly (with JS)
$_POST after form send
<?php
if (isset($_POST['formsent'])){
echo '<pre>';
print_r($_POST);
echo '
'; }?>
Проверка сети в браузере ясно показывает, что все поля с атрибутом disabled
не включены в полезную нагрузку POST, буквально они даже не ' Не выходите из браузера во время отправки формы, поэтому вы все равно не сможете получить их в PHP. Вы не можете обойти это с отключенными полями, это сделано намеренно.
Вместо этого вы можете достичь функции отключения , используя readonly
attr вместо disabled
, но, как вы можете видеть, вы также необходимо будет использовать некоторые стили CSS, чтобы элементы, доступные только для чтения, выглядели так же, как они были отключены.
Для тех, кто не хочет запускать пример сценария, вот его результат на снимке экрана:
Optional approach
... is using hidden fields with same name as disabled fields, however I'd check it in different browsers to make sure:
<form action="form.php" method="post">
<input type="text" name="txt_disabled" disabled="disabled" value="Default Foo disabled"/><br>
<input type="hidden" name="txt_disabled" value="Default Foo disabled"/>
<input type="checkbox" name="box_disabled" disabled="disabled" checked="checked"> disabled <br>
<input type="hidden" name="box_disabled" checked="checked">
<select name="select_disabled" disabled="disabled">
<option value="1">One</option>
<option value="2" selected="selected">Two</option>
<option value="3">Three</option>
</select><br>
<input type="hidden" name="select_disabled" value="2">
<input type="submit" name="formsent" value="Send">
</form>