Скрыть поле ввода текста при загрузке страницы? - PullRequest
1 голос
/ 07 февраля 2012

это должно быть что-то действительно простое, если это возможно. в любом случае делать это? не могу найти его в Интернете.

У меня есть набор флажков и текстовых полей рядом с ним. я только хочу, чтобы текстовые поля появлялись, если я проверял это. мои идентификаторы динамические с использованием php, поэтому я не могу использовать JavaScript из цикла.

код ниже, чтобы проверить, работает ли он, чтобы скрыть. Я могу прятаться по клику, но я надеюсь сделать все наоборот.

while($row = mysql_fetch_array($result)){
                echo "<tr>";
                echo "<td><input name='CBox $TBCounter' type=\"checkbox\" value=\"{$row['type']}\" onclick=\"document.getElementById('TBox $TBCounter').style.visibility='hidden';\"/></td>";
                echo "<td>" . $row['type'] . "</td>
                <td><input type=\"text\" name=\"mytext\" id=\"TBox $TBCounter\"></td><br />
                            </tr>";
                $TBCounter++;
            }

Ответы [ 2 ]

1 голос
/ 07 февраля 2012

Возможно, есть лучшие (читай: менее навязчивые) способы, но простейшим, вероятно, является установка видимости элемента на скрытый и изменение вашего Javascript, чтобы сделать его видимым.

Итак, добавьте style="visibility:hidden;"к элементу textbox и измените javascript для установки .style.visibility = 'visible'

Редактирование вашего кода:

while($row = mysql_fetch_array($result)){
    echo "<tr>";
    echo "<td><input name='CBox $TBCounter' type=\"checkbox\" value=\"{$row['type']}\" onclick=\"document.getElementById('TBox $TBCounter').style.visibility='visible';\"/></td>";
    echo "<td>" . $row['type'] . "</td>
    <td><input type=\"text\" name=\"mytext\" id=\"TBox $TBCounter\" style=\"visibility:hidden\"></td><br />
                </tr>";
    $TBCounter++;
}

Согласно комментарию Джо, это не будет работать для пользователей с отключенным javascriptкак поле, если оно скрыто при загрузке страницы.Одним из способов решения этой проблемы является установка поля, невидимого в javascript, путем вывода встроенного тега сценария.

while($row = mysql_fetch_array($result)){
    echo "<tr>";
    echo "<td><input name='CBox $TBCounter' type=\"checkbox\" value=\"{$row['type']}\" onclick=\"document.getElementById('TBox $TBCounter').style.visibility='visible';\"/></td>";
    echo "<td>" . $row['type'] . "</td>
    <td><input type=\"text\" name=\"mytext\" id=\"TBox $TBCounter\"></td><br />
                </tr>
    <script>document.getElementById('TBox $TBCounter').style.visibility='hidden';</script>";
    $TBCounter++;
}

Третий (лучший) альтернативный вариант - установить класс для текстовых полей и использовать javascript, чтобы скрыть все элементы.с этим классом при загрузке страницы.

1 голос
/ 07 февраля 2012

Вы можете использовать Javascript window.onload для запуска чего-либо при каждой загрузке страницы.


Перед циклом ...

$elementsToHide = array();

Во время цикла установите это

$elementsToHide[] = $TBCounter;

Затем сделайте ваш скрипт (после цикла) похожим на это

<script type="text/javascript">
    window.onload = function ()
    {
        <?php foreach ($elementsToHide AS $TBCounter): ?>
        document.getElementById('TBox <?php echo $TBCounter ?>').style.visibility = 'hidden';
        <?php endforeach ?>
    }
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...