電子書籍の厳選無料作品が豊富!

只今、アンケートを実施しようと考えております。そこで、アンケート内容の未入力チェックとメールアドレスの再入力チェックを行いたいと思っております。メールアドレスを2回とも一致しているか確認したいのですが、思うように動きません。どなたか教えて頂けませんでしょうか。
ちなみに、1回目は通しで入力、2回目は@の前と後ろを分けて入力させたいのですが・・・。

A 回答 (4件)

あの~


f0.Email.value.indexOf("f0.Email.value",0)
まずこれは何をする処理かおわかりでしょうか。
まぁそれはおいといて、
やりたい事は、
「1回目の通し入力」と「2回目@の前」+「文字@」+「2回目@の後ろ」
の比較ですよね?
if (f0.Email.value == f0.Email2.value + "@" + f0.Email3.value) {
}else{
alert("アドレスが一致しません。");
}

尚望ましいのは、メールアドレスは大文字小文字が関係ないので、
if (f0.Email.value.toLowerCase() == f0.Email2.value.toLowerCase() + "@" + f0.Email3.value.toLowerCase() ) {
}else{
alert("アドレスが一致しません。");
}
とするのも良いかも。


で、当初のindexOfは文字の検索ですから、
部分一致はは調べられますが完全一致を調べる事はできません。
abcde@meal.com に対して abc と mail と入力されたら・・・。

"f0.Email.value" はエフゼロピリオド・・・という文字列を表します。定数です。
また、2回目は@の前と後ろを分けて入力のデータがそもそも扱われていないのが・・・。


これから推測するに、
これからは直ぐに処理を書かれるのではなく、
まず処理の流れや使う変数などを何かしらに書いて
それから命令を書くようにする事をお勧めします。
(これを流れ図といいますが、慣れれば頭の中でこれが直ぐに書ける様になります。)
    • good
    • 0
この回答へのお礼

ありがとうございました。
出来ました。

そして、今後は流れ図なるものをはじめに書き、命令を書く事になれるようがんばります。

お礼日時:2005/07/19 18:48

キモの部分は#2さんが回答されているので、その他の部分で気がついた点を挙げます。


><input size="50" name="Name">
タグの要素名とかぶりそうな名前は避けた方が無難です。
foms[0].nameとforms[0].Nameなどで間違えやすくなります。

>(f0.visit[1].checked == "")
おそらくラジオボタンが省略された場所にあると思われますが、
checkedはtrue/falseです。
if (!f0.visit[1].checked and ~~
といった使い方になります。
要素数が変更になった時を考えて、以下のようなループにしておくとなお良し…です。
(getElementsByNameをサポートしていないようなブラウザを考えると一つ一つifの条件に並べた方がいいですが)
var vcheck = false, visits = document.getElementsByName("visit");
for (var i = 0; i < visits.length; i++) {
vcheck = vcheck || visits[i].checked;
}
if (vcheck) {
alert("チェックあり");
} else {
alert("チェック無");
}
    • good
    • 0
この回答へのお礼

ありがとうございました。
そうですね。間違えやすい名前は避けるようにします。そして、ループの回答も大変参考になりました。

お礼日時:2005/07/19 18:53

素朴な疑問ですが、


@の前後を分けて入力させるのは、なぜですか?

この回答への補足

そのまま2重入力ですと、コピペで済ます方が、いるかもしれないので、念のためこの処置をとろうかと思いました。

補足日時:2005/07/19 18:49
    • good
    • 0

>思うように動きません



実際のソース(HTML部分、JavaScript部分)などを可能な限り記載してください。
また、どう動かないのか等も記述が欲しいです。

この回答への補足

javascript部分です。
-------------------------------------------------
function FormCheck() {
var f0 = document.forms[0];

if (f0.Name.value == "") {
alert("名前を入力してください。");
f0.Name.focus();
return false;
}

if (f0.Email.value == "") {
alert("メールアドレスを入力してください。");
f0.Email.focus();
}
else if(f0.Email.value.indexOf("f0.Email.value",0)<=0){
alert("アドレスが一致しません。");
}
}



if ((f0.visit[0].checked == "") &&
(f0.visit[1].checked == "") &&
(f0.visit[2].checked == "") &&
(f0.visit[3].checked == "") &&
(f0.visit[4].checked == "")) {

alert("訪問回数を押して下さい");
return false ;
f0.visit.focus();
}
return true;
}

補足日時:2005/07/19 01:41
    • good
    • 0
この回答へのお礼

補足です。(body部分)
-------------------------------------------------
<table width="536" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center">
<table width="559" border="0" cellspacing="0" cellpadding="0">
<form onsubmit="return FormCheck(this);" action="../form2mail/form2mail.cgi" method="post">
<input type="hidden" name="_subject" value="アンケート">
<input type="hidden" name="_location" value="../p00/thank.html">
<input type="hidden" name="_emailset" value="Email">
<tr>
<td width="100" valign="top" class="body">
お名前:</td>
<td width="459"><input size="50" name="Name"> </td>
</tr>
<tr>
<td width="100" valign="top" class="body">
メールアドレス:</td>
<td width="459"><input size="50" type="text" name="Email" value=""> </td>
</tr>
<tr>
<td width="100" valign="top" class="body">
メールアドレス(再入力):</td>
<td width="459"><input size="20" type="text" name="Email2" value="">@<input size="20" type="text" name="Email3" value=""> </td>
</tr>
<tr>
<td width="270" valign="top" class="body" colspan="2">
訪問履歴</td>
</tr>

<tr>
<td></td>
<td width="459"><input type="submit" value=" 送信 " name="submit"><input type="reset" value=" リセット " name="reset"></td>
</tr>
</form>
</table>

お礼日時:2005/07/19 01:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!