2011-09-16 106 views
-1

我試圖在HMTL聯繫表單中使用javascript,直到鼠標點擊其中一個字段才顯示字段中的文本。然而,我的PHP似乎仍然認爲,只有javascript而不是物理HTML時,字段中才有文本。有人可以幫我解決這個問題嗎?爲什麼我的JavaScript混淆了我的php

的JavaScript/HTML表單

<form method="post" action="sendEmail.php"> 

<input type="text" name="name" id="name" onfocus="if (this.value == 'Your Name') 
this.value = '';" onblur="if (this.value == '') this.value = 'Your Name';" maxlength="30" 
value="Your Name" /> 

<input type="text" name="email" id="email" onfocus="if (this.value == 'Your Email') 
this.value = '';" onblur="if (this.value == '') this.value = 'Your Email';" maxlength="30" 
value="Your Email" /> 
<br /><br /> 


<textarea name="message" id="comments" value="Enter Your Message Here..." cols="60" rows="5" 
onfocus="if (this.value == 'Enter Your Message Here...') this.value = '';" 
onblur="if (this.value == '') this.value = 'Enter Your Message Here...';" >Enter Your Message Here...</textarea>  
</form> 

PHP

if (strlen($name) < 2) { 
     $error['name'] = "Please enter your name"; 
    } 

    if (!preg_match('/^[a-z0-9&\'\.\-_\+][email protected][a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/is', $email)) { 
     $error['email'] = "Please enter a valid email address"; 
    } 

    if (strlen($comments) < 5) { 
     $error['comments'] = "Messages must be longer then 5 characters"; 
    } 
+1

提示:您可能有興趣瞭解[漸進式增強](http://www.alistapart.com/articles/understandingprogressiveenhancement)和[結構,演示和行爲的分離](http://www.alistapart .com/articles/behaviralralseparation) – Herbert

回答

0

但是我的PHP似乎仍認爲有在字段中的文本時,只有其JavaScript而不是物理HTML

JavaScript仍然影響「物理HTML」。如果您使用JavaScript設置值,PHP將在提交時看到它。您可能需要查看HTML5的placeholder屬性(以及在舊瀏覽器上模擬其功能的JavaScript庫)。

+2

+1來對付無法解釋的downvote –

+0

乾杯,@Sean Vieira。 – ceejayoz

0

您已添加或刪除數據的JavaScript,但會更改您的<input>value是表單提交時通過瀏覽器發送的內容。您可以:

  • 添加提交處理程序到您的表單,以清除與它們的默認值中的任何字段他們
  • 使用CSS + JavaScript來在你的輸入移動你的標籤和隱藏/顯示他們作爲用戶聚焦/模糊字段(完全跳過新的佔位符屬性並僅使用JavaScript模仿它)。
  • 完全刪除您的JavaScript並使用新的placeholder屬性(並使用JavaScript填充以向不支持舊版瀏覽器的支持作爲@ceejayoz建議。
    <-- This is the best option
+0

串行downvoter會照顧自己解釋嗎? –

+2

+1有人昨天做了這個。在光明的一面,你們都有8個代表。 :) – Herbert

+1

*笑* @赫伯特,非常好的一點。儘管如此,我還是認爲**他們有很好的降低投票的理由......這意味着我們在這裏丟失了一些重要的東西,無論是關於web開發還是關於該網站應該如何工作;-) –

0

你必須在HTML值,所以即使沒有JavaScript,這些值將被髮送。當值爲默認值時,禁止提交表單。對於此文檔就緒的運行腳本,它將每個輸入的值記錄爲原始值,並附加焦點和模糊處理程序。將提交處理程序附加到表單,該表單檢查提交的值是否爲空或原始值。

+1

+1來對付無法解釋的downvote –

相關問題