2011-09-16 24 views
-1

私はマウスがそれらの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/behaviorassparation) – Herbert

答えて

0

私のPHPはまだときにのみ、テキストがフィールドにあることを考えているようだがJavaScriptと物理的ではない

JavaScriptは引き続き「物理HTML」に影響します。 JavaScriptで値を設定している場合、PHPは送信時にその値を表示します。 HTML5のplaceholder属性(および古いブラウザでその機能をシミュレートするJavaScriptライブラリ)を見てみるとよいでしょう。

+2

説明できないdownvoteに対処するために+1 –

+0

乾杯、@Sean Vieira。 – ceejayoz

0

データを追加または削除したJavaScriptは、<input>のの値がに変更されています。 valueは、フォームが送信されたときにブラウザによって送信されるものです。次のいずれかを実行できます

  • は、あなたの入力の上にラベルを移動するためにそれら
  • 使用CSS + JavaScriptでそのデフォルト値を持つすべてのフィールドをクリアし、表示/非ユーザーとしてそれらを表示するためにフォームに提出するハンドラを追加します。
  • JavaScriptを完全に削除し、新しいplaceholder属性を使用します(JavaScriptシムを使用して、サポートしていない古いブラウザにサポートを追加します)。 @ceejayozが示唆しているように)。
    <-- This is the best option
+0

シリアルダウンボトラーが自分自身を説明してくれませんか? –

+2

+1誰かがこれを昨日やった。明るい側では、あなたはすべて8名分です。 :) – Herbert

+1

* Chuckles * @Herbert、非常に良い点。それでも、私は**彼らがdownvotingのために正当な理由があったと思っています...つまり、Web開発、またはサイトがどのように動作するかについて、ここに欠かせないものがあります.-) –

0

あなたは、HTML内の値を持っているので、さえJavaScriptをせずに、これらの値が送信されます。値がデフォルトのものである場合は、フォームの送信を禁止します。この実行スクリプトは、各入力の値を元の値として記録し、フォーカスハンドラーとブラーハンドラーを添付したドキュメント準備ができています。送信ハンドラをフォームに添付します。このフォームは、空または元の値がある場合に送信される値をチェックします。

+1

説明できないdownvoteに対抗するために+1 –

関連する問題