ページ内に4つのradio の nameグループがあり


function GotoAcc2(){
var frmah = window.document.form2;
frmah.action="xxxxx.php";
frmah.target="_self";
frmah.submit();
}
というonclickについているjsに、『4つのラジオボタンのチェックがないとアラートが出て進めない』
といった命令文を追加したいのですが、分かりません。
助けてください。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2009/11/22 08:02:35
  • 終了:2009/11/22 13:42:37

ベストアンサー

id:kn1967 No.5

kn1967回答回数2915ベストアンサー獲得回数3012009/11/22 12:27:14

ポイント100pt

name バージョン

<html>
<head>
    <script type="text/javascript">
    <!--
        function GotoAcc2(){
            var frmah = window.document.form2;
            var c = 0;
            for (i = 0; i < frmah.elements.length; i++) {
                if (frmah.elements[i].checked == true && frmah.elements[i].type == "radio") {
                    c++;
                }
            }
            if (c == 4) {
                frmah.action="xxxxx.php";
                frmah.target="_self";
                frmah.submit();
            } else {
                alert("未選択の項目があります。");
            }
        }
    //-->
    </script>
</head>
<body>
    <form name="form2">
        <input type="radio" name="a" value="1" />a1
        <input type="radio" name="a" value="2" />a2
        <input type="radio" name="a" value="3" />a3<br />
        <input type="radio" name="b" value="1" />b1
        <input type="radio" name="b" value="2" />b2
        <input type="radio" name="b" value="3" />b3<br />
        <input type="radio" name="c" value="1" />c1
        <input type="radio" name="c" value="2" />c2
        <input type="radio" name="c" value="3" />c3<br />
        <input type="radio" name="d" value="1" />d1
        <input type="radio" name="d" value="2" />d2
        <input type="radio" name="d" value="3" />d3<br />
        <input type="button" onclick="javascript:GotoAcc2()" value="送信"/>
    </form>
</body>
</html>

http://q.hatena.jp/ダミーでごめんね。

※コメント欄開いてないから、回答にさせてもらいました。

コメント欄開いてたら細かな話も出来て便利なので、開けておくことをお勧めしておきます。

id:hidecky

すみません、はてなに質問する事自体に慣れていませんで。。。

コメント欄というのは質問を出す際に設定しなくてはいけなかったようですね。

残念です。2度も回答いただきありがとうございます。

やってみます。。。

2009/11/22 12:45:23

その他の回答(4件)

id:aiaida333 No.1

aiaida333回答回数166ベストアンサー獲得回数42009/11/22 08:17:15

ポイント20pt

わかりません

がんばってください。

http://q.hatena.ne.jp/1258780694

id:kebo987654 No.2

kebo987654回答回数38ベストアンサー獲得回数102009/11/22 10:29:30

ポイント50pt

nameを使ってラジオボタンを取得してforループでチェックしてみました。

お試しあれ。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
	<meta http-equiv="content-type" content="text/html; charset=Shift_JIS">
	<meta http-equiv="content-script-type" content="text/javascript">
	<title></title>
	<script type="text/javascript" src="test1.js"></script>
</head>
<body>
	<form id="form2" name="form2">
		<input type="radio" name="radio1">
		<input type="radio" name="radio1">
		<input type="radio" name="radio1">
		<input type="radio" name="radio1">
		<input type="button" value="Button1" onclick="GotoAcc2()">
	</form>
</body>
</html>

--- test1.js ---

function GotoAcc2(){
	var frmah = window.document.form2;        
	
	// フォーム内の name="radio1" を取得
	var radio1 = document.getElementsByName( "radio1" );
	// ループ
	for( var i = 0, l = radio1.length; i < l; ++i )
	{
		if( radio1[i].checked )
		{
			// チェックされていたとき
			// ループを抜ける
			break;
		}
	}
	
	if( i == l )
	{
		// 全てのラジオボタンがチェックされていなかったとき
		// alertする
		alert( "どれかのボタンにチェックを入れてください。" );
	}
	else
	{
		// ラジオボタンがチェックされていたとき
		// submitする
		frmah.action = "xxxxx.php";
		frmah.target = "_self";
		frmah.submit();
	}
}

http://q.hatena.ne.jp/1258844554

id:hidecky

ご回答有難う御座います。本当に困っていて、さらに質問を重ねてしまうのですが、

これはnameが4種類

<input type="radio" name="radio1">

<input type="radio" name="radio1">

<input type="radio" name="radio2">

<input type="radio" name="radio2">

<input type="radio" name="radio3">

<input type="radio" name="radio3">

<input type="radio" name="radio4">

<input type="radio" name="radio4">

のような場合でも有効なのでしょうか・・・・

2009/11/22 10:34:03
id:kn1967 No.3

kn1967回答回数2915ベストアンサー獲得回数3012009/11/22 10:47:17

ポイント50pt
<html>
<head>
    <script type="text/javascript">
    <!--
        function GotoAcc2(){
            var frmah = window.document.getElementById("form2");
            var c = 0;
            for (i = 0; i < frmah.elements.length; i++) {
                if (frmah.elements[i].checked == true && frmah.elements[i].type == "radio") {
                    c++;
                }
            }
            if (c = 4) {
                frmah.action="xxxxx.php";
                frmah.target="_self";
                frmah.submit();
            } else
                alert("未選択の項目があります。");
            }
        }
    //-->
    </script>
</head>
<body>
    <form id="form2">
        <input type="radio" name="a" id="a" value="1" />a1
        <input type="radio" name="a" id="a" value="2" />a2
        <input type="radio" name="a" id="a" value="3" />a3<br />
        <input type="radio" name="b" id="b" value="1" />b1
        <input type="radio" name="b" id="b" value="2" />b2
        <input type="radio" name="b" id="b" value="3" />b3<br />
        <input type="radio" name="c" id="c" value="1" />c1
        <input type="radio" name="c" id="c" value="2" />c2
        <input type="radio" name="c" id="c" value="3" />c3<br />
        <input type="radio" name="d" id="d" value="1" />d1
        <input type="radio" name="d" id="d" value="2" />d2
        <input type="radio" name="d" id="d" value="3" />d3<br />
        <input type="button" onclick="javascript:GotoAcc2()" value="送信"/>
    </form>
</body>
</html>

フォーム(Form)

id:hidecky

<input radio>のタグが自動で吐き出されるようになっており、それにはidが振ってなく、

name のみで処理しなくてはならなくて、できません(*ノ_<*)エーン

2009/11/22 12:03:35
id:GoldenDawn No.4

GoldenDawn回答回数426ベストアンサー獲得回数812009/11/22 10:52:43

ポイント50pt

ちょっと泥臭いですけどこんな感じでどうでしょうか。

フォーム

<form name="form2">
  項目 1
  <input type="radio" name="r1" value="1" />
  <input type="radio" name="r1" value="2" />
  <input type="radio" name="r1" value="3" />
  <br />

  項目 2
  <input type="radio" name="r2" value="1" />
  <input type="radio" name="r2" value="2" />
  <input type="radio" name="r2" value="3" />
  <br />

  項目 3
  <input type="radio" name="r3" value="1" />
  <input type="radio" name="r3" value="2" />
  <input type="radio" name="r3" value="3" />
  <br />

  項目 4
  <input type="radio" name="r4" value="1" />
  <input type="radio" name="r4" value="2" />
  <input type="radio" name="r4" value="3" />
  <br />

  <input type="button" onclick="GotoAcc2()" value="Send" />
  <input type="reset" />
</form>

JavaScript

function GotoAcc2() {
  with (window.document.form2) {
    try {
    for (var i = 0; i < r1.length; ++i) {
      if (r1[i].checked) break ;
      if (i == r1.length - 1) throw "1" ;
    }
    for (var i = 0; i < r2.length; ++i) {
      if (r2[i].checked) break ;
      if (i == r2.length - 1) throw "2" ;
    }
    for (var i = 0; i < r3.length; ++i) {
      if (r3[i].checked) break ;
      if (i == r3.length - 1) throw "3" ;
    }
    for (var i = 0; i < r4.length; ++i) {
      if (r4[i].checked) break ;
      if (i == r4.length - 1) throw "4" ;
    }
  } catch (e) {
    alert("項目 " + e + " が選択されていません") ;
    return ;
  }

    action = "xxxxx.php" ;
    target = "_self" ;
    submit();
  }
}

http://q.hatena.ne.jp

id:hidecky

できません(*ノ_<*)エーン

2009/11/22 12:01:42
id:kn1967 No.5

kn1967回答回数2915ベストアンサー獲得回数3012009/11/22 12:27:14ここでベストアンサー

ポイント100pt

name バージョン

<html>
<head>
    <script type="text/javascript">
    <!--
        function GotoAcc2(){
            var frmah = window.document.form2;
            var c = 0;
            for (i = 0; i < frmah.elements.length; i++) {
                if (frmah.elements[i].checked == true && frmah.elements[i].type == "radio") {
                    c++;
                }
            }
            if (c == 4) {
                frmah.action="xxxxx.php";
                frmah.target="_self";
                frmah.submit();
            } else {
                alert("未選択の項目があります。");
            }
        }
    //-->
    </script>
</head>
<body>
    <form name="form2">
        <input type="radio" name="a" value="1" />a1
        <input type="radio" name="a" value="2" />a2
        <input type="radio" name="a" value="3" />a3<br />
        <input type="radio" name="b" value="1" />b1
        <input type="radio" name="b" value="2" />b2
        <input type="radio" name="b" value="3" />b3<br />
        <input type="radio" name="c" value="1" />c1
        <input type="radio" name="c" value="2" />c2
        <input type="radio" name="c" value="3" />c3<br />
        <input type="radio" name="d" value="1" />d1
        <input type="radio" name="d" value="2" />d2
        <input type="radio" name="d" value="3" />d3<br />
        <input type="button" onclick="javascript:GotoAcc2()" value="送信"/>
    </form>
</body>
</html>

http://q.hatena.jp/ダミーでごめんね。

※コメント欄開いてないから、回答にさせてもらいました。

コメント欄開いてたら細かな話も出来て便利なので、開けておくことをお勧めしておきます。

id:hidecky

すみません、はてなに質問する事自体に慣れていませんで。。。

コメント欄というのは質問を出す際に設定しなくてはいけなかったようですね。

残念です。2度も回答いただきありがとうございます。

やってみます。。。

2009/11/22 12:45:23
  • id:hidecky
    皆様の素早い回答を頂き、無事解決する事ができました。
    有難う御座いました。
    実装に至った回答を頂いた、kn1967 様へ いるか賞をお渡ししたいと思います。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません