- ベストアンサー
テキストエリアに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」のまま投稿されてしまいます。 何か解決する良いアイデアはないでしょうか。 どうかよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは <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」のまま送信されることになります
その他の回答 (2)
- 15mm
- ベストアンサー率65% (65/100)
onblur、onfocusでテキストボックスの中身そのものを変更するのではなく、 背景画像(「name」の文字のみの画像)を表示・非表示することによって 似たような効果を演出しているのを見たことがあります。 <input ~中略~ style="background-image:url(name.gif);" onblur="this.style.backgroundImage='url(name.gif)';" onfocus="this.style.backgroundImage='';" /> のような感じだと思います。(ファイル名は仮のものです) ちなみにそのフォームがCGI等への送信であれば、CGI等のほうで、内容が「name」のままであればそれに対する処理をするというのもどうでしょう・・・
お礼
ご返信大変遅れてしまってどうもすいみませんでした。 どうもありがとうございました。
- auty
- ベストアンサー率58% (284/486)
フォームに何も入力せず投稿ボタンを押す送信を取りやめる場合は、 確認はしていませんが, <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)"> 追加してみてください。
お礼
ご返信大変遅れてしまってどうもすいみませんでした。 どうもありがとうございました。
お礼
ご返信大変遅れてしまってどうもすいみませんでした。 どうもありがとうございました。