こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

テキストエリアに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」のまま投稿されてしまいます。

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

投稿日時 - 2008-03-26 19:57:33

QNo.3897164

暇なときに回答ください

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

こんにちは

<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」のまま送信されることになります

投稿日時 - 2008-03-26 21:52:59

お礼

ご返信大変遅れてしまってどうもすいみませんでした。
どうもありがとうございました。

投稿日時 - 2010-02-14 20:19:29

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

onblur、onfocusでテキストボックスの中身そのものを変更するのではなく、
背景画像(「name」の文字のみの画像)を表示・非表示することによって
似たような効果を演出しているのを見たことがあります。

<input ~中略~ style="background-image:url(name.gif);" onblur="this.style.backgroundImage='url(name.gif)';" onfocus="this.style.backgroundImage='';" />

のような感じだと思います。(ファイル名は仮のものです)


ちなみにそのフォームがCGI等への送信であれば、CGI等のほうで、内容が「name」のままであればそれに対する処理をするというのもどうでしょう・・・

投稿日時 - 2008-04-09 15:29:38

お礼

ご返信大変遅れてしまってどうもすいみませんでした。
どうもありがとうございました。

投稿日時 - 2010-02-14 20:19:06

ANo.1

フォームに何も入力せず投稿ボタンを押す送信を取りやめる場合は、
確認はしていませんが,

<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)">

追加してみてください。

投稿日時 - 2008-03-26 21:29:44

お礼

ご返信大変遅れてしまってどうもすいみませんでした。
どうもありがとうございました。

投稿日時 - 2010-02-14 20:19:44

あなたにオススメの質問