このようなアンケートがあるとします。
//アンケートスタート
●Q1 あなたはJavascriptを使いこなしていますか?
ラジオボタン回答1 使いこなしている
ラジオボタン回答2 あまり使いこなしているといえない
ラジオボタン回答3 ぜんぜん使いこなしていない
●Q2 Q1で「あまり使いこなしているといえない」
「ぜんぜん使いこなしていない」と回答した方のみお答えください。
その理由はどのようなものですか?
チェックボックス回答1 むずかしい
チェックボックス回答2 わかりにくい
チェックボックス回答3 そのほか
テキストフィールド そのほかの理由( )
【送信ボタン】
//アンケートエンド
■上のアンケートでJavascriptを使用して
次のことをしたいのですが、教えてください。
1.Q1の2と3にチェックがあるのに、
Q2に未回答のままフォームデータを送信しようとした場合に、
アラートを表示させたい
2.Q2で3を選んだ人にもかかわらず、
そのほかの理由テキストフィールドに未記入のまま
フォームデータを送信しようとした場合、
アラートを表示させたい
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
えーと、
まず確認を取っておきたいのですが
SubmitCheck()は該当<form>タグからonSubmitで呼び出しているんでしょうか?
また、regsは該当<form>の名前(name属性の値)ととっていいんでしょうか?
あと、【中略】 の部分にはreturn trueは無いととっていいんでしょうか?
とりあえず上記の条件ととって話を進めると
No2.で僕がやったように
onSubmit="SubmitCheck(this)"
で呼び出して関数名をfunction SubmitCheck(thisform)にしておけば
document.regsはすべてthisformに置き換える事が出来ます。
【中略】の後を
scriptqueshantei = checans(thisform);
return scriptqueshantei;
とすれば問題ないと思います。確認はとってません。
あと複数回答の件ですがはっきりチェックボックスと書いてありましたね。見落としてました。ごめんなさい。
else{
quesumu = checradioon(thisform.ques2);
if(!quesumu){
alert("Q2に答えてください。");
return false;
}
}
if(thisform.ques2[2].checked){
if(thisform.q2else.value==""){
alert("テキスト欄に理由を書いてください。");
return false;
の部分を
else{
quesumu = checques2(thisform);
if(!quesumu){
alert("Q2に答えてください。");
return false;
}
}
if(thisform.q2a3.checked){
if(thisform.q2else.value==""){
alert("テキスト欄に理由を書いてください。");
return false;
に書き換えてください。
そして次の関数を加えてください。
function checques2(thisform){
var checkumua1;
var checkumua2;
var checkumua3;
checkumua1 = thisform.q2a1.checked;
checkumua2 = thisform.q2a2.checked;
checkumua3 = thisform.q2a3.checked;
if(checkumua1 || checkumua2 || checkumua3){
return true;
}
else{
return false;
}
}
本当はchecradioonみたいに流用の利く関数にしたかったんだけど難しそうだったんで特化したものにしました。
ちなみにQ2のname属性の値はid属性のそれと同じものに変えてあります。
ありがとうございます。
本日、所用のためデータをいじることができませんので、実際データに入れ込んでテストしてみてから、あれば、改めて質問などさせていただければと思います。すみません。
No.4
- 回答日時:
>チェックはしてくれるのですが、そのまま送信のダイアログボックスがでてきてしまいます…。
入力画面に戻し、その回答欄にフォーカスさせたいです!関数自体はできている様なので、送信ボタンのonclickイベントで
onclick="javascript:SubmitCheck()"
とすればよいのでは?・・・
>あと、Q2は複数回答できるようにしたいのですが、
>ラジオボタンのままで大丈夫なのでしょうか?
ラジオボタンの名前を変えればできます。
<input type="radio" name="rad2_1">2-1
<input type="radio" name="rad2_2">2-2
<input type="radio" name="rad2_3">2-3
No.2
- 回答日時:
<html>
<head>
<script type="text/javascript">
<!--
function checans(thisform){
var quesumu;
quesumu = checradioon(thisform);
if(!quesumu){
alert("Q1に答えてください。")
return false;
}
if(thisform.ques1[0].checked){
return true;
}
else{
quesumu = checradioon(thisform.ques2);
if(!quesumu){
alert("Q2に答えてください。");
return false;
}
}
if(thisform.ques2[2].checked){
if(thisform.q2else.value==""){
alert("テキスト欄に理由を書いてください。");
return false;
}
}
return true;
}
function checradioon(thisradio){
var countradio = thisradio.length;
for(i = 0;i < countradio;i++){
if(thisradio[i].checked){
return true;
}
}
return false;
}
//-->
</script>
</head>
<body>
<form onSubmit="return checans(this)" action="送信先のURL">
<p>●Q1 あなたはJavascriptを使いこなしていますか? </p>
<p>
<label for="q1a1">
<input type="radio" name="ques1" id= "q1a1" value="q1a1">使いこなしている
</label>
<label for="q1a2">
<input type="radio" name="ques1" id= "q1a2" value="q1a2">あまり使いこなしているといえない
</label>
<label for="q1a3">
<input type="radio" name="ques1" id= "q1a3" value="q1a3">ぜんぜん使いこなしていない
</label>
</p>
<p>●Q2 Q1で「あまり使いこなしているといえない」「ぜんぜん使いこなしていない」と回答した方のみお答えください。
その理由はどのようなものですか? </p>
<p>
<label for="q2a1">
<input type="radio" name="ques2" id= "q2a1" value="q2a1">むずかしい
</label>
<label for="q2a2">
<input type="radio" name="ques2" id= "q2a2" value="q2a2">わかりにくい
</label>
<label for="q2a3">
<input type="radio" name="ques2" id= "q2a3" value="q2a3">そのほか
</label>
</p>
<input type="text" name="q2else">
<input type="submit" value="送信">
</form>
</body>
</html>
ちなみに当たり前の話ですがアンケートに答える人がjavascriptを無効にしてあったり使えない環境の場合エラーなしで投稿できてしまいます。
この回答への補足
ありがとうございます。
すでにあるfunction SubmitCheck()という送信時のチェックのためのプログラムに上のチェック機能を追加したいのですが、どのように書き直せばいいのでしょうか…。
ちなみにそのfunctionはつぎのようになっています。
function SubmitCheck()
{
var bchecked = 0; //これは入力中のチェックです
if(allHankakuCheck()){
return false;
}
if(allNumericCheck()){ //これも入力中のチェックです
return false;
}
if(ua == 0 || ua == 2){
if ( document.regs.media.selectedIndex == 0 ){
alert("どのようにしてこのページをしりましたか?");
return false;
}
if ( !EmptyCheck(document.regs.name.value,"あなたの名前を記入してください") )
{
document.regs.name.focus();
return false;
}
【中略】
return true;
}
あと、Q2は複数選択できるようにしたいのですが、
単純にcheckboxに変更するだけじゃだめですよね?
No.1
- 回答日時:
こんな感じ?
<html>
<head>
<script language="javascript">
<!--
function ChkVal()
{
var blnChk = false;
if(document.all.item("rad1",1).checked || document.all.item("rad1",2).checked)
{
for (i=0; i<document.all.item("rad2").length; i++)
{
if(document.all.item("rad2",i).checked)
{
blnChk = true;
}
}
if(!blnChk)
{
alert("Q2未選択!");
}
else
{
if(document.all.item("rad2",2).checked && !frm1.txt.value)
{
alert("txt1未入力!");
}
}
}
}
//-->
</script>
</head>
<body>
<form name="frm1" method="post">
Q1<br>
<input type="radio" name="rad1" value="1">1-1
<br>
<input type="radio" name="rad1" value="2">1-2
<br>
<input type="radio" name="rad1" value="3">1-3
<p>
Q2<br>
<input type="radio" name="rad2" value="4">2-1
<br>
<input type="radio" name="rad2" value="5">2-2
<br>
<input type="radio" name="rad2" value="6">2-3
<br>
txt1<input type="text" name="txt">
<br>
<input type="button" name="btn1" value="Check!" onclick="ChkVal();">
</form>
</body>
</html>
この回答への補足
ありがとうございます。
チェックはしてくれるのですが、そのまま送信のダイアログボックスがでてきてしまいます…。入力画面に戻し、その回答欄にフォーカスさせたいです!
あと、Q2は複数回答できるようにしたいのですが、
ラジオボタンのままで大丈夫なのでしょうか?
すみません。ご教示ください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javaScriptで画面に値を入れるには 1 2022/08/14 12:27
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Microsoft ASP グーグルフォーム 1 2022/12/30 18:16
- Access(アクセス) Accessで予定表を作成しようとしてます。 テーブル フィールド名 連番 オートナンバー型 年月日 2 2023/07/23 11:40
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- ノートパソコン 大学生です。 Googleフォームでアンケートを送信しようとしています。 どういう組織であればアンケ 1 2023/01/05 16:31
- JavaScript javascriptで入力フォームが空欄の時にアラートによるエラーを出すコードを書いています。 2 2023/06/13 17:58
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- その他(クラウドサービス・オンラインストレージ) Forms のアンケートで、地図をいれてもらうことできますか?他 3 2023/03/27 09:55
- JavaScript 空白で入力フォームのボタンをクリックしたら、ブラウザの上部からjavascriptで 表示されるアラ 1 2022/05/20 11:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javascript作成してます。ラジ...
-
チェックされたラジオボタンに...
-
ラジオボタンのチェックが外れ...
-
ラジオボタンのリセット方法
-
ラジオボタンの分岐方法に関して
-
JavaScriptでラジオボタンのチ...
-
ラジオボタンでdisabledとchecked
-
ラジオボタンのvalueとlabelの...
-
Form内のselectを連動させるに...
-
フォームPOST後「戻る」時のチ...
-
正規表現で複数マッチ条件で悩...
-
マウスをブラウザの外に出した...
-
<JavaScript>tableタグを入力不...
-
return trueとreturn falseの用...
-
プルダウン 項目が多いので先頭...
-
hiddenのvalueの値を変えたい
-
【jsp/Java】チェックボックス...
-
Javascriptでのbuttonのname属...
-
onchangeイベントを強制的に発...
-
POST時に要素を削除してからPOST
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ラジオボタンにタブインデック...
-
ラジオボタンのチェックが外れ...
-
javascript作成してます。ラジ...
-
ラジオボタンでチェックした項...
-
ラジオボタンの値でリンク先を...
-
データベースの値を判断してラ...
-
Form内のselectを連動させるに...
-
フォームPOST後「戻る」時のチ...
-
【診断テストの作り方】結果に...
-
チェックボックスとテキストボ...
-
複数のラジオボタンでの選択で...
-
ラジオボタンのValueを受け取り...
-
チェックされたラジオボタンに...
-
ラジオボタンのリセット方法
-
チェックボックスのON/OFFに連...
-
JavaScript ラジオボタン デ...
-
jQueryで複数のラジオボタンを処理
-
ラジオボタンで診断テストを作...
-
ラジオボタンによる有効なボタ...
-
【javascript】firefoxでの、al...
おすすめ情報