Использование html-форм и php для проверки пустой текстовой области или при наличии значения по умолчанию - PullRequest
1 голос
/ 16 апреля 2011

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

<form id="form" method="post" action="email.php">    

<p><label style="width: 400px; float: left; height: 20px" for="comments">Your enquiry details?</label>
<textarea style="width: 400px; height: 84px" id="comments" rows="1" cols="1" 
          onfocus="if (this.value == this.defaultValue) { this.value = ''; }" 
          name="comments">
e.g. There are 5 of us looking to hire either caravan for 7 nights on the dates above. Are we able to have BBQ's?
</textarea> </p>

 All sections MUST be completed!<br />

<p class="submit">    
<button type="reset">Reset</button>    
<button name="send" type="submit">Submit</button> </p></fieldset> </form>

Это часть моей страницы PHP:

$string_exp = ".";
 if(!eregi($string_exp,$comments)) {
    $error_message .= 'You did not leave a comment!.<br />';

Это работает правильно, вызывая ошибку, если текстовое поле пустое (так как у меня есть регулярное выражение ".", Чтобы они могли использовать любую вещь на клавиатуре для своих комментариев), но я также хочу, чтобы оно выдавало ошибку, если оно все еще говорит значение по умолчанию из «Например, 5 из нас хотят арендовать любой караван на 7 ночей в указанные даты. У нас есть барбекю?»

Как я могу это сделать?

С уважением

Ответы [ 4 ]

1 голос
/ 16 апреля 2011

Расширьте свой чек, включив в него текущий чек, а также проверку строки.

$default = "e.g. There are 5 of us looking to hire either caravan for 7 nights on the dates above. Are we able to have BBQ's?"

if (($comments == "") || ($comments == $default))) {
   $error_message .= 'You did not leave a comment!.<br />';

Для получения бонусных баллов используйте переменную $default, чтобы заполнить шаблон, чтобы он не был записанв двух местах.

1 голос
/ 16 апреля 2011

Во-первых, функция eregi устарела с версии 5.3. preg_match - это путь!

Во-вторых, если вы хотите проверить, было ли введено значение no , почему бы не сравнить с ... ничем? php будет рассматривать пустые строки как ложные значения.

В-третьих, если у вас есть значение, почему бы не сравнить его с ним?

if (!$comments || $comments === 'my default value') {
    $error_message .= 'You did not leave a comment!.<br />';
}

Ознакомьтесь с документацией php по Булевы значения .

1 голос
/ 16 апреля 2011
if(!$comments || $comments == 'There are 5 of us looking to hire either caravan for 7 nights on the dates above. Are we able to have BBQ's?')

Если можно использовать текст только в браузерах, отличных от IE, вы также можете использовать атрибут-заполнитель HTML5 ( demo ):

<textarea ... placeholder="here are 5 of us looking to hire either caravan for 7 nights on the dates above. Are we able to have BBQ's?"></textarea>
0 голосов
/ 16 апреля 2011

Возможно, я неправильно понял.Но если вы хотите проверить на стороне сервера (email.php), вы можете просто сделать:

$default_comment = "There are 5 of us looking to hire either caravan for 7 nights on the dates above. Are we able to have BBQ's?"

$comments = (string)$_POST['comments'];

if( empty($comments) || $comments == $default_comment )
    $error_message .= 'You did not leave a comment!.<br />';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...