ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者: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
この回答への補足この回答に補足をつける(質問者のみ)
この回答へのお礼この回答にお礼をつける(質問者のみ)
 
最新から表示回答順に表示