質問 |
||
| 質問者:gigigi | テキストエリアにvalue以外で文字列 | |
|---|---|---|
困り度:
|
<input id="name" name="name" type="text" value="name" onblur="if(this.value == '') this.value='name';" onfocus="if(this.value == 'name') this.value='';" /> フォームにnameという文字列が表示されていてクリックすると文字列が消える。フォーカスを外すと再びnameが表示される。 それだけならば上記のコードで問題ないんですが、フォームに何も入力せず投稿ボタンを押すと、内容が「name」のまま投稿されてしまいます。 何か解決する良いアイデアはないでしょうか。 どうかよろしくお願いします。 |
|
質問投稿日時:08/03/26 19:57 質問番号:3897164 |
||
回答 |
|
| 回答者:15mm | onblur、onfocusでテキストボックスの中身そのものを変更するのではなく、 背景画像(「name」の文字のみの画像)を表示・非表示することによって 似たような効果を演出しているのを見たことがあります。 <input 〜中略〜 style="background-image:url(name.gif);" onblur="this.style.backgroundImage='url(name.gif)';" onfocus="this.style.backgroundImage='';" /> のような感じだと思います。(ファイル名は仮のものです) ちなみにそのフォームがCGI等への送信であれば、CGI等のほうで、内容が「name」のままであればそれに対する処理をするというのもどうでしょう・・・ |
|---|---|
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| |
回答日時:08/04/09 15:29 回答番号:No.3 |
|
| この回答への補足 | この回答に補足をつける(質問者のみ) |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |
回答 |
|
| 回答者:leap_day | こんにちは <script type="text/javascript"><!-- function check() { i = document.getElementById("name").value; if(i == "name") return false; } //--></script> <form action="***.cgi" method="post" onsubmit="return check()"> <input id="name" name="name" type="text" value="name" onblur="if(this.value == '') this.value='name';" onfocus="if(this.value == 'name') this.value='';"/> <input type="submit" value="投稿"> </form> とか <script type="text/javascript"><!-- function check() { i = document.getElementById("name").value; if(i == "name") { alert("名前を入力して下さい"); } else { document.getElementById("f").submit(); } } //--></script> <form action="***.cgi" method="post" id="f"> <input id="name" name="name" type="text" value="name" onblur="if(this.value == '') this.value='name';" onfocus="if(this.value == 'name') this.value='';" /> <script type="text/javascript"> document.write("<input type='button' value='投稿' onclick='check()'>"); </script> <noscript> <input type="submit" value="投稿"> </noscript> </form> とか <script type="text/javascript"><!-- function check() { i = document.getElementById("name").value; obj = document.getElementById("submit"); if(i != "name" && i != "") { obj.disabled = false; } else { obj.disabled = true; } } //--></script> <form action="***.cgi" method="post"> <input id="name" name="name" type="text" value="name" onblur="if(this.value == '') this.value='name';" onfocus="if(this.value == 'name') this.value='';" onkeyup="check()"/> <script type="text/javascript"> document.write("<input type='submit' value='投稿' id='submit' disabled>"); </script> <noscript> <input type="submit" value="投稿"> </noscript> </form> とか? ※こういったチェックはjavascriptを使用してしかできない(知らないだけかもしれませんが)ので当然javascriptを切っていれば「name」のまま送信されることになります |
|---|---|
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| |
回答日時:08/03/26 21:52 回答番号:No.2 |
|
| この回答への補足 | この回答に補足をつける(質問者のみ) |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |
回答 |
|
| 回答者:auty | フォームに何も入力せず投稿ボタンを押す送信を取りやめる場合は、 確認はしていませんが, <head></head>の中に ------------------------------------------------------------ <script type="text/javascript"> <!-- function check(f) { if (f.name.value=="name") { return false; } } //--></script> ------------------------------------------------------------ を挿入し、<form>タグにonsubmit属性を <form method="post" onsubmit="return check(this)"> 追加してみてください。 |
|---|---|
| 種類:アドバイス どんな人:経験者 自信:参考意見 |
|
| |
回答日時:08/03/26 21:29 回答番号:No.1 |
|
| この回答への補足 | この回答に補足をつける(質問者のみ) |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |