【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集

回答を締め切って、良回答・次点を同じ人などにしてしまった場合、エラーメッセージがでますが、あれはどのようにすればできるのでしょうか?
フォームメールで、ラジオボタンでチェックするようにしてますが、グループ分けだけでは、重複した回答になってしまうのです。
やっていることは、5つの項目で、1~5まで順位をつけてもらいたい、ということです。
gooでも、ラジオボタンで重複チェックはできますが、エラーメッセージがでます。
あれと同じことがしたいです。
ただ当方、これに関してまったく見当もつかず、Javaさんかな~?、くらいの知識です。
詳しい方法などに関しては、さすがに初心者すぎて、お願いしづらいのですが、
参考HPや、こういうのでやるんだよ、程度のアドバイスで結構ですので、
何卒、よろしくお願い申し上げます。

A 回答 (1件)

はじめまして、yukiko5さん。



こういったケースの説明が書かれているHPとか知らず、javascript全くわからない?
ぽいんで、今回はやりたいこと(#質問を理解違いしてなければ)を実現できるよ!という
コードをのせちゃいますね。

#javascriptについてながながと書かれても多分辛いとおもったので、あえてこの
 やりたい事に限定した動くコードを書きました(^^ゞ
#一応処理の説明コメントをいれているので、やっている事はわかるよと思うよ。
 各javascript(関数・文)自体も理解したい!という事だったら、そこで使っている
 関数名等で初心者向けのjavascriptのページとかで勉強してみてね。
#サクサクと作ったものだけど、そのまま使ってもらってもいいですよ。
#gooがどうしているかは、質問だした事がないのでソースがみれない・・gooと同じでは
 ないです。

きっとこのradioの制御した後に次のページに渡すものと思うんだけど・・
この例のコードでは
   ・項目1~5を、ans1~ans5という名前で、値1~5をセット。
   ・次のページは、「XXX.XX」とダミーにしてある。
ので、君の使う環境に合わせて変更してね。

ではがんばって。

#長いレスになってしまいました^^;
#gooが(実際にはHTML規格上によるものだけど)空白文字を無視して表示しちゃうんで
 コードが行先頭から表示されて見づらくなっちゃうね。
 コードをよくみたい場合は、メモ帳とかにコピーして "{" 単位にタブや空白文字で
 段差をつけてみてね。

==(ここから)====

<html>
<head>
<SCRIPT LANGUAGE="JavaScript">
<!--
function check() {
var i;
var message = "";
var flag = true;
//配列[0]~[4]が値1~5のON指示あったかを判断する為につかう場所(0/1)=なし/あり
var on_array = Array(0,0,0,0,0);
var cnt = 0; //選択されている項目数をセット
var val;

//項目分のループ
for(i=1;i<=5;i++) {
//同値(順位)ONされてないか、またONされていない項目がないか、チェック
//#eval()にて可変変数参照を可能にしている、
// ans1~ans5かつ[0]~[4]分固定書きしなくてもよいのでコード量軽減

//1項目5値分のループ※配列は[0]開始
for(j=0;j<5;j++) {
var objname = "document.form1.ans"+i+"["+j+"].";
//ON選択されている箇所を発見
if( eval(objname+"checked") == true ) {
cnt++;
//指定値(順位)が既に選択済みかチェック
val = eval(objname+"value");
if( on_array[val-1] != 0 ) {
flag = false; //選択済み:同値複数選択判明
break;
}
on_array[val-1] = 1;

//1項目1つのONチェックとなるようnameを同一にしている為、
//1cheked確認したら本項目は他ONありえない
break;
}
}
}
if( flag == true && cnt != 5 ) //全項目選択されていない
message = "各項目1つずくONチェックして下さい";
else if( flag == false ) //同値(順位)選択があった
message = "同一値の指定なしでONチェックして下さい";

if( message != "" ) {
alert(message);
flag = false;
}

return(flag);
}
// -->
</SCRIPT>
</head>

<body>
<form name="form1" action="XXX.XX">
<!-- 1項目毎のHTMLコード:開始 -->
項目1<br>
<input type="radio" name="ans1" value="1">項目1の値A<br>
<input type="radio" name="ans1" value="2">項目1の値B<br>
<input type="radio" name="ans1" value="3">項目1の値C<br>
<input type="radio" name="ans1" value="4">項目1の値D<br>
<input type="radio" name="ans1" value="5">項目1の値E<br>
<p>

★2~4の部分は記載省略。同じような規則でかいてね★

項目5<br>
<input type="radio" name="ans5" value="1">項目5の値A<br>
<input type="radio" name="ans5" value="2">項目5の値B<br>
<input type="radio" name="ans5" value="3">項目5の値C<br>
<input type="radio" name="ans5" value="4">項目5の値D<br>
<input type="radio" name="ans5" value="5">項目5の値E<br>
<p>
<input type="submit" name="btn" value="送信" onClick="return check()">

</form>
</table>
</body>
</html>

この回答への補足

どうもありがとうございました。無事できました。
本当に初心者のクセに、大変申し訳ございません。。。。

ところで、再度質問させていただきたいのですが、
項目の値1-5を、アルファベット、もしくは漢字、などにはできるのでしょうか?
ちょっとやってみたら、何をしても、「選びなおして」のメッセージがでます。
どこらへんをいじるのか???ちょっと怖くててがでません。

大変申し訳ないのですが、再度お教えいただければと思います。
よろしくお願い申し上げます

補足日時:2002/01/31 19:45
    • good
    • 0
この回答へのお礼

なんとかなってしまいました。ありがとうございました。

お礼日時:2002/02/04 11:27

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


おすすめ情報