2011-04-16 58 views
1

嗨我有一個表格,我想驗證底部的textarea。我想要它,所以如果默認值存在或如果該框是空的它錯誤。這是我的形式我在看的部分:使用HTML格式和PHP驗證空白textarea或如果默認值存在

<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晚以上,我們能吃燒烤嗎?「

我該怎麼做?

親切的問候

+1

認真嗎?使用正則表達式來檢查一個字符串是否爲空?只需測試'if(!$ comments)' – ThiefMaster 2011-04-16 11:45:29

回答

1
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

非常感謝Zirak!這對我有用,我會尋找preg_match。 – Adam 2011-04-16 17:12:29

+0

實際上,這在我的測試服務器上工作,但是當我將它放在活動服務器上時,它並不是出於某種原因,相同的代碼和所有內容。所以我使用了ThiefMaster而不是像佔位符部分:) – Adam 2011-04-16 17:32:33

1

展開您的檢查,包括你目前的支票,還有一個字符串檢查。

$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

首先,the eregi function自PHP 5.3以來已棄用。 preg_match是要走的路!

二,如果你想測試是否值被輸入,爲什麼不比較...什麼都沒有? PHP會將空字符串視爲虛假值。

三,假設你有這個價值,爲什麼不比較呢?

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

看看Boolean values上的php文檔。

0

我可能會誤解。 但是如果你想驗證服務器端(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 />';