Установка стиля CSS в <p>не работает - Codeigniter - PullRequest
4 голосов
/ 09 июля 2010

Этот код ниже не применяет класс, упомянутый в теге p в chrome, но работает в IE, Firefox
<code><p class="p_error"><?php print $this->validation->errorValue;?></p>
Here CSS -> <code>.p_error{ color:red; text-align:left; font-size:12px; }

Любой намек или причина, почему это не работает?
С выхода хрома -> с помощью элемента проверки ->


Обязательное поле Обрабатывается.

Ответы [ 9 ]

5 голосов
/ 09 июля 2010

По умолчанию система добавляет тег абзаца (<p>) вокруг каждого отображаемого сообщения об ошибке. Вы можете легко изменить эти разделители с помощью этого кода, размещенного в вашем контроллере:
$this->validation->set_error_delimiters('<div class="error">', '</div>');

для Ref: http://codeigniter.com/user_guide/libraries/validation.html>

2 голосов
/ 16 июля 2010

Это код, сгенерированный PHP-скриптом:

<p class="p_error"><p>The Treated By field is required.</p></p>

Спецификация HTML гласит, что:

  • Элемент P не может быть внутри другого элемента P
  • *Тег 1009 * может быть опущен (подразумевается)

Эти правила означают, что вы можете написать что-то вроде этого:

<p>First paragraph
<p>Second paragraph

Браузер автоматически закроет первый абзац (т.е. добавит</p>) перед вторым <p>.

В вашем случае это означает, что ошибка заканчивается за пределами абзаца p_error, поскольку «проверяющий элемент» показывает:

<p class="p_error"></p>
<p>The Treated By field is required.</p>
2 голосов
/ 09 июля 2010

Как выглядит ваш CSS? Это должно выглядеть примерно так:

.p_error {
  color: red;
  font-weight: bold;
}
1 голос
/ 09 июля 2010

По умолчанию система добавляет тег абзаца (<p>) вокруг каждого отображаемого сообщения об ошибке.Вы можете легко изменить эти разделители с помощью этого кода, помещенного в ваш контроллер:
$this->validation->set_error_delimiters('<div class="error">', '</div>');

для Ref: http://codeigniter.com/user_guide/libraries/validation.html>

1 голос
/ 09 июля 2010

Просто, <p> не может обернуть <p>. Так что браузер запутается, если вы дадите ему <p><p>content</p></p>. Возможны варианты использования встроенных аргументов оболочки:

<?= form_error('lastname_error', '<p class="p_error">', '</p>'); ?>

Или обернуть все это в элемент, который может обернуть <p>, например <div>.

<div class="p_error"><?php print $this->validation->lastname_error;?></div>

Конечно, вам придется стилизовать div вместо p.

0 голосов
/ 18 июля 2010

Один из простых способов исправить это - изменить код так:

CSS (без изменений)

.p_error{ color:red; text-align:left; font-size:12px; }

PHP (изменить P на DIV)

<div class="p_error"><?php print $this->validation->errorValue;?></div>
0 голосов
/ 09 июля 2010

В вашем <p class="p_error"></p> ничего нет, поэтому ничего нельзя отобразить.Если вы хотите, чтобы отображалось отдельных ошибок , вы должны использовать

<?php echo form_error('your_field'); ?>

и для стайлинга

<?php echo form_error('your_field', '<p class="p_error">', '</p>'); ?>

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

0 голосов
/ 09 июля 2010

при просмотре страницы обязательно удерживайте кнопку Shift и нажмите кнопку «Обновить». Таким образом, ваш браузер загрузит новый CSS (при условии, что вы добавили p_error с момента первоначальной загрузки страницы)

0 голосов
/ 09 июля 2010

я думаю, что внутри $ errorValue у вас есть другие html-теги, которые перегружают объявление стиля <p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...