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

このQ&Aに関連する最新のQ&A

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で質問しましょう!

このQ&Aと関連する良く見られている質問

Qラジオボタンの選択によってチェックボックスのチェックできる個数を制限し

ラジオボタンの選択によってチェックボックスのチェックできる個数を制限したい。

他の方の質問を見たのですがマッチする質問がなかったのでご質問させていただきます。

現在申し込みフォームを作成しているのですが、要件としては、
ラジオボタンの選択によってチェックボックスのチェックできる個数を制限したい。
と思っています。javascriptで実現できると思うのですがなかなかできずに困っております。

<ラジオボタン>
○りんご ○みかん ○めろん ○すいか

<チェックボックス>
□青森産 □愛媛産 □千葉産 □神奈川産


りんごを選んだ人は、チェックボックスで1つしか選択できないようにしたい。
みかんを選んだ人は、チェックボックスで2つしか選択できないようにしたい。
めろんを選んだ人は、チェックボックスで3つしか選択できないようにしたい。
すいかを選んだ人は、チェックボックスで4つ選択できるようにしたい。

可能であれば制限を超えた場合はアラートを上げたいと思います。
2つまでしか選べませんというように。

大変申し訳ありませんが、参考になるページやソースなどを教えていただければと
思います。よろしくお願い致します。

ラジオボタンの選択によってチェックボックスのチェックできる個数を制限したい。

他の方の質問を見たのですがマッチする質問がなかったのでご質問させていただきます。

現在申し込みフォームを作成しているのですが、要件としては、
ラジオボタンの選択によってチェックボックスのチェックできる個数を制限したい。
と思っています。javascriptで実現できると思うのですがなかなかできずに困っております。

<ラジオボタン>
○りんご ○みかん ○めろん ○すいか

<チェックボックス>
□青森産 □愛媛産 □千...続きを読む

Aベストアンサー

#1です。nameを合わせてみました。
ついでに、多すぎるチェックしかしてませんでしたが、少ない場合のチェックも追加しました。(質問の要件を見落としてました)
送信する時だけ少ないケースもチェック。
送信ボタン契機でアラートを出した場合はフォームが送信されないようにしています。

<script type="text/javascript">
function sample(Submit){
var kosuu = {
'りんご':1,
'みかん':2,
};

var count = 0;
var fld3 = document.getElementsByName('fld3[]');
for(i=0;fld3[i];i++) if(fld3[i].checked) count++;
var fld1 = document.getElementsByName('fld1');
for(i=0;fld1[i];i++) {
if(fld1[i].checked) {
if(count > kosuu[fld1[i].value] ) {
alert('選択産地が多すぎです。'+kosuu[fld1[i].value]+'個選んでください。');
return false;
} else if(Submit && count < kosuu[fld1[i].value]){
alert('選択産地が足りません。'+kosuu[fld1[i].value]+'個選んでください。');
return false;
}
break;
}
}
return true;
}
</script>
</head>
<body>

<form onsubmit="return sample(true)">
<p>
<label><input type="radio" name="fld1" value="りんご" onclick="sample()">りんご</label>
<label><input type="radio" name="fld1" value="みかん" onclick="sample()">みかん</label>
</p>
<p>
<label><input type="checkbox" name="fld3[]" value="" onclick="sample()">青森産</label>
<label><input type="checkbox" name="fld3[]" value="" onclick="sample()">愛媛産</label>
<label><input type="checkbox" name="fld3[]" value="" onclick="sample()">千葉産</label>
</p>
<p><input type="submit"></p>
</form>

#1です。nameを合わせてみました。
ついでに、多すぎるチェックしかしてませんでしたが、少ない場合のチェックも追加しました。(質問の要件を見落としてました)
送信する時だけ少ないケースもチェック。
送信ボタン契機でアラートを出した場合はフォームが送信されないようにしています。

<script type="text/javascript">
function sample(Submit){
var kosuu = {
'りんご':1,
'みかん':2,
};

var count = 0;
var fld3 = document.getElementsByName('fld3[]');
for(i=0;fld3[i];i++) if(fld3[i].checked) co...続きを読む

Qラジオボタンを選択すると、他のラジオボタンの動きを制御したい

radio1~radio3のいずれか「はい」を選択すると、
その他が強制的に「いいえ」に切り替わるスクリプトはどのように作成すればよろしいでしょうか?

<INPUT TYPE=radio NAME="radio1" VALUE="1">はい
<INPUT TYPE=radio NAME="radio1" VALUE="2">いいえ

<INPUT TYPE=radio NAME="radio2" VALUE="1">はい
<INPUT TYPE=radio NAME="radio2" VALUE="2">いいえ

<INPUT TYPE=radio NAME="radio3" VALUE="1">はい
<INPUT TYPE=radio NAME="radio3" VALUE="2">いいえ

Aベストアンサー

寝ぼけてた。
<form>
<p>
<input type="radio" name="radio1" value="1" class="gp0">はい
<input type="radio" name="radio1" value="2" class="gp0" checked>いいえ
</p>
<p>
<input type="radio" name="radio2" value="1" class="gp0">はい
<input type="radio" name="radio2" value="2" class="gp0" checked>いいえ
</p>
<p>
<input type="radio" name="radio3" value="1" class="gp0">はい
<input type="radio" name="radio3" value="2" class="gp0" checked>いいえ
</p>
</form>


<script type="text/javascript">
//@cc_on
var grp = 'gp0';
var reg = new RegExp('\\b' + grp + '\\b');
var elms = document.getElementsByTagName('input');
var o, objs = [], cnt = 0;
while (o = elms[cnt++]) if (o.className && o.className.match(reg)) objs.push(o);

document./*@if(1)attachEvent('on'+ @else@*/addEventListener(/*@end@*/'click',
function (evt) {
var c = 0;
var e = evt./*@if (1) srcElement @else@*/ target /*@end@*/;

if (!(e.tagName == 'INPUT' && e.type == 'radio')) return;
if (!(e.className && e.className.match(reg))) return;

if (e.value == '1') {
while (o = objs[c++]) o.checked = o.value == '2';
e.checked = true;
}
}
, false);

</script>
でどうでしょう?

寝ぼけてた。
<form>
<p>
<input type="radio" name="radio1" value="1" class="gp0">はい
<input type="radio" name="radio1" value="2" class="gp0" checked>いいえ
</p>
<p>
<input type="radio" name="radio2" value="1" class="gp0">はい
<input type="radio" name="radio2" value="2" class="gp0" checked>いいえ
</p>
<p>
<input type="radio" name="radio3" value="1" class="gp0">はい
<input type="radio" name="radio3" value="2" class="gp0" checked>いいえ
</p>
</form>


<script...続きを読む

Qラジオボタンのチェック

はじめまして。新規ユーザー登録の画面を作成しているのですが。
性別を必須項目にしています。

ラジオボタンで
○男性 ○女性
としているのですが。

どちらかを選択しないと警告が出るようにしたいのです。

一体どのようにすれば警告がでるのでしょうか?

よろしくお願いします。

Aベストアンサー

こんな風にします

<html>
<head>
<script language="javascript">
function check(f){
var sex=f.sex;
var flg=true;
for(var i=0;i<sex.length;i++){
if(sex[i].checked) flg=false;
}
if(flg){
alert("性別を選択してください");
return false;
}
return true;
}
</script>
</head>
<body>
<form action="" method="get" onSubmit="return check(this)">
<input type="radio" name="sex" value="male">男性
<input type="radio" name="sex" value="female">女性
<input type="submit" vakue="go">
</form>
</body>
</html>

こんな風にします

<html>
<head>
<script language="javascript">
function check(f){
var sex=f.sex;
var flg=true;
for(var i=0;i<sex.length;i++){
if(sex[i].checked) flg=false;
}
if(flg){
alert("性別を選択してください");
return false;
}
return true;
}
</script>
</head>
<body>
<form action="" method="get" onSubmit="return check(this)">
<input type="radio" name="sex" value="male">男性
<input type="radio" name="sex" value="female">女性
<inp...続きを読む

QラジオボタンのNullチェック

ラジオボタンがひとつもチェックが入ってない時にエラーを出したいのですがうまくいきません。
<script language="JavaScript1.2">
function chk_Riyu(){
for(idRadio=0; idRadio<frmEntry.optRiyu.length; idRadio++){
if(frmEntry.optRiyu[idRadio].checked) {
return true;
break;
}
alert("チェックされてません");
return false;
}
}
</script>

<form name="frmEntry" action="aaa.htm" method="post">

<input type="submit" value="理由" onclick="return chk_Riyu()">

<input type="Radio" name="optRiyu" value="1">あああ</td>
<input type="Radio" name="optRiyu" value="2">いいい</td>
<input type="Radio" name="optRiyu" value="3">ううう</td>

このソースだと、一度目はチェックにひっかかるのですが、再度ラジオボタンにチェックを入れて理由ボタンを押してもエラーになってしまいます。
どこかおかしいところがありましたら教えていただけないでしょうか。
すみませんが宜しくお願いいたします。

ラジオボタンがひとつもチェックが入ってない時にエラーを出したいのですがうまくいきません。
<script language="JavaScript1.2">
function chk_Riyu(){
for(idRadio=0; idRadio<frmEntry.optRiyu.length; idRadio++){
if(frmEntry.optRiyu[idRadio].checked) {
return true;
break;
}
alert("チェックされてません");
return false;
}
}
</script>

<form name="frmEntry" action="aaa.htm" method="post">

<input type="submit" value="理由" onclick="return chk_Riyu()">

<input type="R...続きを読む

Aベストアンサー

チェックのループを抜けるところが間違ってます。

これだと、最初のボタンがチェックされてないと、alert() で return false に
なりますよ。

function xxx() {
  for (...) {
    if (ラジオボタン[i].checked) {
      return true;
    }
  }
  alert(チェックされてない);
  return false;
}

Qラジオボタン未チェックの場合のアラート

送信ボタンを押したときに、ラジオボタンが未チェックの場合に、アラートを出すように、
以下の内容でスクリプトを組んでいるのですが、チェックをしても アラートが出てしまいます。
あまりjavascript強くないので、自分では限界なので どなたか分かる方いらっしゃいましたらご指摘お願いします。


【HEAD内スクリプト】


function beforeSubmit(){

if(F1.NOUHIN[0].checked == false || F1.NOUHIN[1].checked == false || F1.NOUHIN[2].checked == false || F1.NOUHIN[3].checked == false || F1.NOUHIN[4].checked == false || F1.NOUHIN[5].checked == false){
 alert("ご希望の納品時間を選んでください");
 return false;
}
}


【BODY内ソース】
<form name=F1 action=mailto:****?subject=ORDER method=post encType=text/plain onSubmit="return beforeSubmit()" method="post" enctype="text/plain">


<input type="radio" name="NOUHIN" value="指定なし">指定なし
<input type="radio" name="NOUHIN" value="午前">午前
<input type="radio" name="NOUHIN" value="14~16時">午後2~4時
<input type="radio" name="NOUHIN" value="16~18時">午後4~6時
<input type="radio" name="NOUHIN" value="18~20時">午後6~8時
<input type="radio" name="NOUHIN" value="20~21時">午後8~9時

</form>

送信ボタンを押したときに、ラジオボタンが未チェックの場合に、アラートを出すように、
以下の内容でスクリプトを組んでいるのですが、チェックをしても アラートが出てしまいます。
あまりjavascript強くないので、自分では限界なので どなたか分かる方いらっしゃいましたらご指摘お願いします。


【HEAD内スクリプト】


function beforeSubmit(){

if(F1.NOUHIN[0].checked == false || F1.NOUHIN[1].checked == false || F1.NOUHIN[2].checked == false || F1.NOUHIN[3].checked == false || F...続きを読む

Aベストアンサー

一つは、F1・・・となっているのが
正しくはdocument.F1ですね。
もう一つは「||」はオアなのでダメです
「&&」ですね。

通常は自分のformをthisというオブジェクトで
なげて、以下のようにします。

<script language=javascript>
function beforeSubmit(f){
for (var i=0;i<f.length;i++){
if(f[i].name=="NOUHIN" && f[i].checked==true) return true;
}
alert("ご希望の納品時間を選んでください");
return false;
}

</script>

<form name="F1" action="mailto:hoge@hogehoge.com" method="post" onSubmit="return beforeSubmit(this)">
<input type="radio" name="NOUHIN" value="指定なし">指定なし
<input type="radio" name="NOUHIN" value="午前">午前
<input type="radio" name="NOUHIN" value="14~16時">午後2~4時
<input type="radio" name="NOUHIN" value="16~18時">午後4~6時
<input type="radio" name="NOUHIN" value="18~20時">午後6~8時
<input type="radio" name="NOUHIN" value="20~21時">午後8~9時
<input type="submit" value="実行">
</form>

一つは、F1・・・となっているのが
正しくはdocument.F1ですね。
もう一つは「||」はオアなのでダメです
「&&」ですね。

通常は自分のformをthisというオブジェクトで
なげて、以下のようにします。

<script language=javascript>
function beforeSubmit(f){
for (var i=0;i<f.length;i++){
if(f[i].name=="NOUHIN" && f[i].checked==true) return true;
}
alert("ご希望の納品時間を選んでください");
return false;
}

</script>

<form name="F1" action="mailto:hoge@hogehoge.com...続きを読む


人気Q&Aランキング

おすすめ情報