• ベストアンサー
  • 暇なときにでも

テキストエリアにvalue以外で文字列

  • 質問No.3897164
  • 閲覧数678
  • ありがとう数3
  • 回答数3

お礼率 91% (237/260)

<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」のまま投稿されてしまいます。

何か解決する良いアイデアはないでしょうか。
どうかよろしくお願いします。

質問者が選んだベストアンサー

  • 回答No.2
  • ベストアンサー

ベストアンサー率 60% (338/561)

こんにちは

<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」のまま送信されることになります
お礼コメント
gigigi

お礼率 91% (237/260)

ご返信大変遅れてしまってどうもすいみませんでした。
どうもありがとうございました。
投稿日時:2010/02/14 20:19

その他の回答 (全2件)

  • 回答No.3

ベストアンサー率 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」のままであればそれに対する処理をするというのもどうでしょう・・・
お礼コメント
gigigi

お礼率 91% (237/260)

ご返信大変遅れてしまってどうもすいみませんでした。
どうもありがとうございました。
投稿日時:2010/02/14 20:19
  • 回答No.1

ベストアンサー率 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)">

追加してみてください。
お礼コメント
gigigi

お礼率 91% (237/260)

ご返信大変遅れてしまってどうもすいみませんでした。
どうもありがとうございました。
投稿日時:2010/02/14 20:19
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ページ先頭へ