Флажок типа ввода в php не совпадает в html - PullRequest
0 голосов
/ 12 марта 2020

Если я хочу отключить флажок с помощью html, мне нужно вставить его во входной тег.

<input type="checkbox" class="someone" name="any"  disabled> html

Но если я хочу построить его с помощью PHP, отключение зависит от условия напишет:

$question = 'foo';
        echo '<input type="checkbox" class="someone" name="any"';
                if ($question == 'foo'){
                    echo 'disabled';
                }
                echo '">php';
                echo '<br>';
                echo '<input type="checkbox" class="someone" name="any"  disabled> html';

Если вы попробуете, вы увидите форму Google Devtools, которые пишут так же, но только html работает

enter image description here

Почему ????

Ответы [ 2 ]

2 голосов
/ 12 марта 2020

Проблема с вышеприведенным PHP заключается в том, что у вас неправильно есть дополнительная закрывающая кавычка - если вы должны использовать printf, вам не нужен такой сложный / запутанный синтаксис, как этот.

Обратите внимание:

printf(
    '<input type="checkbox" class="someone" name="any" value="1" %s />', 
    ( $question=='foo' ? 'disabled' : '' )
);

%s - это заполнитель, который заменяется значением из троичного оператора.

0 голосов
/ 12 марта 2020

Это может быть потому, что оба входа имеют одинаковый атрибут имени. Каждый флажок является уникальным элементом ввода, и, как правило, каждый из них имеет свое собственное значение для атрибута имени. Я не совсем уверен, но наличие двух входов с одинаковыми именами может привести к непредсказуемому поведению в браузерах.

Так же, как заголовок, вы также можете упростить способ написания этого кода, используя строковая переменная, встроенная, например, так:

$question = 'foo';
$disabled = $question ? 'disabled' : ''
echo '<input type="checkbox" class="someone" name="any" '.$disabled.'>';

Еще лучше, лучше отделить ваш HTML от вашего PHP, например, так:

<?php
    $question = 'foo';
    $disabled = $question ? 'disabled' : '';
?>

<input type="checkbox" class="someone" name="any" <?php echo $disabled; ?>>
...