2012-02-13 6 views
0

私はフォームを使って作業しています。フロントエンドの開発者は、テキストボックスの内部にデフォルトのテキストを持っています。たとえば、郵便番号入力ボックスにはラベルはありませんが、ボックスには事前入力されたテキストがあります。ここに入力の例がありますあらかじめ用意されたテキストボックス(デフォルトの記述テキストを持つテキストボックス)をクライアント側で処理するにはどうすればよいですか?

<input id="place" name="place" type="text" value="(City, State or Zip Code)" 

この特定の入力は検索フォームにあります。この入力は、他の入力とともに、ajax経由でサーバーに渡されます。結果がサーバーに到着すると、 "place"というポスト変数があり、ユーザーによって変更されていない場合、値は "(都市、州または郵便番号)"になります。私は、デフォルトのテキストが変更されていない(入力に何も入力されていない)場合、サーバはこの$ _post変数を空と見なすように簡単に実装できるフロントエンドソリューションがあるかどうか疑問に思っています。私はすでに、私は、サーバー上でチェックし、

if $_post[place] == "(City, State or Zip Code)" 
//place is empty, omit it from the search query 

を見ることができることを知っているが、より良い方法が存在する場合、私は、より良い方法を探しています。

デフォルトの入力テキストはどのように扱いますか?

ありがとうございます!

編集要約すると、ユーザーが変更していない場合、この入力と他の入力を空白としてサーバーに渡す方法を探しています。私は前述の$ _post [place]を使用せずにサーバサイドで、そして可能であればクライアント側でもやりたいと思います。

答えて

1

あなたはそのためにplaceholder属性を使用する必要があります。http://www.w3schools.com/html5/att_input_placeholder.asp

これは、プレースホルダの値が表示されますが、それをサーバに送信しません。 古いバージョンのブラウザでは、必要に応じて空の入力またはJSへのフォールバックに正常に劣化させます(サポートされているかどうかを確認する方法:http://davidwalsh.name/html5-placeholder)。

0

JavaScript(ブラウザで実行中)では、現在の値とデフォルト値を比較できます。それがデフォルト値の場合は、リクエスト内のその特定の変数に沿ったAjaxパスを持っていないようにしてください。

+0

すごかった!私は質問に少し追加したので、おそらくあなたはそれを見ていないでしょう。現在の値==デフォルト値をチェックする方法はありますか?私はサーバー側のチェックを行うことができます。もし別の方法が存在しなければ、おそらくそれをやります。ありがとう! –

0

クリスD.あなたはjQueryのを使用している場合、あなたはclick()data()にデフォルト値を格納することができ、その後、要求を送信するときに保存された1対の新しいデータを比較し、キツネにあなたの質問に答えます。
@valentinasplaceholderはHTML5でのみサポートされているため、彼が探しているものではない可能性があります。

$('input').click(function(){ $(this).data('default', $(this).val()); }); 

// On your request 
if ($('input').val() === $('input').data('default')) {} 
+0

必要に応じて古いブラウザにフォールバックを追加する方法があります:http://davidwalsh.name/html5-placeholder。 – valentinas

+0

ああ、ええ、私は知っていますが、おそらく彼はHTML5を使用していません... – elclanrs

+0

あなたの応答に感謝します。私はフロントエンドの男ではないが、プレースホルダは可能な答えのように聞こえる。しかし、あなたはこれがすべてのブラウザではうまくいかないと言っています(私はIEでうまくいきませんが、まだテストしていません:p)。私は本当にプレースホルダーのことをしたいと思っていますが、私はバグに遭遇したくありません –