radioボタンでも、うまくアラート処理したいのですが・・・

このQ&Aのポイント
  • <SCRIPT LANGUAGE="JavaScript"> <!-- // ヌル及び空欄のチェックを行う function isFilled(elm) { if (elm.value == "" || element.value == null) return false; else return true; } function isReady(form) { // 名前の空欄のチェックを行う if (isFilled(form.name) == false) { alert("お名前を入力して下さい。"); form.name.focus(); return false; } return true; } //--> </SCRIPT>
  • フォームによるアンケートページを作成しているのですが、textボックスで回答が書かれていなく、空欄の部分があったらアラートを出し、そのtextボックス部分に戻す、というような上記プログラムの流れにしています。textボックスではうまくいくのですが、radioボタンのとき、うまくいきません(アラートは出るが、フォームに戻らない)。回避策を教えてください。
回答を見る
  • ベストアンサー

radioボタンでも、うまくアラート処理したいのですが・・・

<SCRIPT LANGUAGE="JavaScript"> <!-- // ヌル及び空欄のチェックを行う function isFilled(elm) { if (elm.value == "" || elm.value == null) return false; else return true; } function isReady(form) { // 名前の空欄のチェックを行う if (isFilled(form.name) == false) { alert("お名前を入力して下さい。"); form.name.focus(); return false; } return true; } //--> </SCRIPT> フォームによるアンケートページを作成しているのですが、 textボックスで回答が書かれていなく、空欄の部分があったら アラートを出し、そのtextボックス部分に戻す、というような 上記プログラムの流れにしています。 textボックスではうまくいくのですが、radioボタンのとき、 うまくいきません(アラートは出るが、フォームに戻らない)。 回避策を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#99638
noname#99638
回答No.2

全体のスクリプトが分からないのでとりあえず書いてみました。 多分下の書き方で、大丈夫だと思うのですが・・・ 少し長いですが、参考にして下さい。(プログラムが余り上手くないのはご勘弁) <SCRIPT LANGUAGE="JavaScript"> //テキストフィールド用入力チェック function isFilled(elm) {  if (elm.value == "" || elm.value == null){   return false;  }else{   return true;  } } //ラジオボタン用入力チェック function isSelected(radioobj){   for ( i = 0 ; i < radioobj.length ; i++ ) {    if ( radioobj[i].checked ) {     return true;    }   }   return false; } //送信ボタンが押されたときのチェック function check(fm){  if(isFilled(fm.namae) == false){   alert("名前入れてね")   return false;  }  if (isFilled(fm.addr) == false) {   alert("アドレス入れてね")   return false;  }  if(isSelected(fm.present) == false){   alert("プレゼントを選んでね")   return false;  }   //好きなだけチェックを入れられます return true; //最後にtrueを返す } </SCRIPT> フォーム部分です。 <FORM NAME="fm" ACTION="送信先" onSubmit="return check(this)">  名前:    <INPUT SIZE="25" TYPE="text" NAME="namae" >         <!-- name="name" から変更しました ↑--> <BR>  アドレス:  <INPUT SIZE="30" TYPE="text" NAME="addr"> <BR>    <INPUT TYPE="radio" NAME="present" value="りんご">りんご   <INPUT TYPE="radio" NAME="present" value="バナナ">バナナ <BR> <INPUT TYPE="submit" VALUE="送信"> <BR> </FORM>

その他の回答 (2)

noname#99638
noname#99638
回答No.3

今回は、k_satoさんがお急ぎのようでしたので、いきなりスクリプトを書いてしまいましたが、ちょっとまとめておきます。 1.ラジオボタンの「on」「off」は、 フォームの名前.ラジオボタンの名前[インデックス].checked の true か false をひとつずつ調べます。 ちなみに、  ラジオボタンの名前.length   は、同じ名前(NAMEプロパティの値が同じ)をもつラジオボタンの数です。 2.一番下のスクリプトが上手くいかなかったのは、  テキストボックスの場合    入力漏れがあれば  Submitに false を返す  ラジオボタンの場合    チェックされていれば Submitに true を返す と、判断が反対になっていたからだと思います。 3.真下のスクリプトを少し工夫すると、抜けがある項目をすべて表示するということもできます。 (今のままだと、名前が抜けていれば、プレゼントが抜けていても「名前をいれてね」としか出ませんから) ヒントは var msg= "" if(名前が抜けてたら){  msg = msg + "名前 " } です。(名探偵コナン(アニメ版)の次週のヒントなみですな・・・ほとんど答え?) では、参考になりましたら幸いです。 

k_sato
質問者

お礼

望んでいたプログラムの流れが出来ました! kana-tan様のおかげです・・・。 本当にありがとうございました(^-^) ちなみにアラートのOKを押した後、カーソルを 自動で空欄部分に戻す方法も付け足しました。 function check(fm){  if(isFilled(fm.namae) == false){   alert("お名前を入力して下さい")    fm.namae.focus();   return false;  }  ・  ・ だけど、radioボタンだけは無理なんですよね。 でも、大満足です。 本当にありがとうございました。

k_sato
質問者

補足

本当にありがとうございます! さっそく、教えていただいた通りに書き直して試してみます。 うまくプログラムが流れてくれるといいのですが・・・。 のちほど、またご報告します。

noname#99638
noname#99638
回答No.1

radioボタンのときの処理をどのように書かれているかがわからないので、新たに書いてみました。 下の書き方ではダメですか? (フォーマットを整えるために全角空白が入っているので、コピーペーストしても動きません。) <SCRIPT LANGUAGE="JavaScript"> //チェック用関数(引数はFORMオブジェクト) function check(fm) {   for ( i = 0 ; i < fm.foo.length ; i++ ) {    if ( fm.foo[i].checked ) {     return true; //どれかチェックされていたらフォームを送る    }   }   alert("NG") //チェックされてないよ   return false; } </SCRIPT>  :  : <FORM ACTION="送信先" onSubmit="return check(this)"> <INPUT TYPE="radio" NAME="foo" value="value1">value1 <INPUT TYPE="radio" NAME="foo" value="value2">value2 <INPUT TYPE="radio" NAME="foo" value="value3">value3  <BR> <INPUT TYPE="submit" VALUE="決定"> </FORM> 思っていた書き方ではなかったら、お返事下さい。

k_sato
質問者

補足

ありがとうございます。 radioボタンの処理はわからず、止まっていました。 そして、kana-tan様のプログラムでradioボタンでも 動くようにはなったのですが…。 <!-- // ヌル及び空欄のチェックを行う function isFilled(elm) { if (elm.value == "" || elm.value == null) return false; else return true; } function isReady(form) { // 名前の空欄のチェックを行う if (isFilled(form.name) == false) { alert("お名前を入力して下さい。"); form.name.focus(); return false; } // ふりがなの空欄のチェックを行う if (isFilled(form.kana) == false) { alert("ふりがなを入力して下さい。"); form.kana.focus(); return false; }  ・  ・  ・ return true; } //プレゼントの空欄チェックを行う function isReady(fm) { for ( i = 0 ; i < fm.present.length ; i++ ) { if ( fm.present[i].checked ) { return true; // } } alert("プレゼントをお選び下さい。") // return false; } //--> </SCRIPT> アンケート項目は複数個あり、それぞれのアラートメッセージを 出していました。 上記のように、textボックスのチェックは今までのプログラムで行い、 radioボタンのチェックのみ、kana-tan様のプログラムで組んでみたら、 全て同じアラート文(プレゼントをお選び下さい。)が出てしまいました。 複数textボックスとradioボタンを組み合わせて使用したいのですが、 どのように組んだらよいのか、ご指導お願いいたします。 ちなみに textボックスは <INPUT size="25" type="text" name="name">  ・  ・ radioボタンは <INPUT TYPE="radio" NAME="present" value="りんご">りんご <INPUT TYPE="radio" NAME="present" value="バナナ">バナナ と、普通のhtmlで記述しています。

関連するQ&A

  • 未入力のラジオボタンに、alertを表示したい。

    過去問を見て、応用しようとしましたがうまくゆきません。 超初心者ですので・・・ すいません、質問させてください。 WinXP、IE6を使っています。 下記のソースコード(簡略化しています)で、未入力の場合テキストではalertが表示されるのですが、ラジオボタンでは表示されません。 どう記述すれば表示されるのでしょうか? お分かりの方、教えてください。 よろしくお願いします。 <html> <head> <title>お申し込み</title> <script language="JavaScript"> <!-- function checkSubmit() { if (document.form1.Name.value == "") { alert("お名前をご入力ください!"); return false; } if (confirm("この内容で送信します。\nよろしいですか?") == false) { return false; } return true; } //--> </script> </head> <form name="form1" method="post" action="http://www.000/" onSubmit="return checkSubmit()"> お名前:<input type="text" name="Name" size="20"> 男性<input type="radio" name="Seibetu" value="Man"> 女性<input type="radio" name="Seibetu" value="Woman"> <input type="submit" value="お申し込み"> </form> </body> </html>

  • javascriptでのアラート表示

    javascriptで大変困っております。 ラジオボタン・テキストエリアにまたがったチェックアラートをだしたいのですが、うまくいきません。 <script> function form_check(f) { if (f.Q1.value == "") { alert("・未記入です!"); return false; } ・ ・ ・ if (f.Q6.value == "") { alert("・名前が未記入です!"); return false; } else return true; } function reset_conf() { if (confirm("フォーム内容をリセットします!\n\nよろしいですか?")) return true; else return false; } </script> -------- <FORM ACTION="hogehoge.cgi" METHOD="POST" onSubmit="return form_check(this)"> 教育:<INPUT TYPE="radio" NAME="Q1" VALUE="OK"> テスト:<INPUT TYPE="radio" NAME="Q2" VALUE="OK">  アンケート:<INPUT TYPE="radio" NAME="Q3" VALUE="OK"> AAA:<input name="Q4" type="text" /> BBB:<input name="Q5" type="text" /> CCC:<input name="Q6" type="text" /> <INPUT TYPE="hidden" NAME="number" VALUE="6"> <INPUT TYPE="submit" NAME="answer" VALUE="送信する"> <INPUT TYPE="reset" NAME="reset" VALUE="リセット"> </FORM> </form> ------- テキストエリアのアラートチェックは出来ない状態です。 すべてにチェックまたは、テキスト入力がされていないと送信できないようにしたいのです。 どうしたらよいでしょうか?

  • formのボタンをsubmitしたときにアラート

    javascript で、formのボタンをsubmitしたときに アラートが出るようにしたいと思います。 下記のように作ってみましたが、うまく動きません。 どのようにすれば動くでしょうか? ご教示いただきたくお願いいたします。 <script type="text/javascript"> function(){ $('form1').submit(function(){ $.ajax({ type: 'POST', data: postData, url: 'buy.php', success: function(data){alert("購入できました");} error: function(){alert('購入できませんでした。再度お試しください');} }); return false; }); } </script> <form name="form1" id="form1" method="POST" name="form1" value="form1" action="buy.php"> <input type="hidden" name="id" value="100" /> <input type="hidden" name="name" value="高橋" /> <input type="submit" value="Save"> <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 || 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>

  • フォームメールでURL送信時、存在しないURLの入力を拒否したい

    xmlhttprequest.comにあるxmlhttprequest.jsを使って、 会社の問い合わせページとして、URLやコメント等を入力して 送信できるメールフォームのページを作っています。 存在しないURLを入力した場合はエラーを返すようにしたのですが、 今度は、メールフォームのコマンドが実行されなくなって しまいました。 どこがおかしいのかご教示いただきたく。 <html><head><title>お問い合せ</title> <script type="text/javascript" src="xmlhttprequest.js"></script> <script type="text/javascript"><!-- xhobj = new XMLHttpRequest(); LoadFlg = 0; function init(){ } function go(){ document.form2.Url.value = "http://www.google.co.jp/" + document.form1.Url.value; document.form2.comment.value = document.form1.comment.value; if ( all_check(document.form1) ){ document.form2.submit(); } } function all_check(form){ if( !(nullCheck(form.Url,"URLを")) ){ return false; } if( !(nullCheck(form.comment,"問合せ内容を")) ){ return false; } if( !(stateCheck(form.Url)) ){ return false; } return true; } function alert_focus(obj,str){ alert(str + "入力してください。"); obj.focus(); } function nullCheck(obj,str){ if (obj.value == "" || obj.value == null){ alert_focus(obj,str); return false; }else{ return true; } } function stateCheck(obj){ if(xhobj == null){ alert("お使いのブラウザは対応していません。"); return false; } if(LoadFlg == 0){ LoadFlg = 1; xhobj.onreadystatechange = handleXHRequest; xhobj.open("GET", "http://www.google.co.jp/"+ obj.value, true); xhobj.send(null); } else { LoadFlg = 0; xhobj.abort(); return true; } } function handleXHRequest(){ if(xhobj.readyState == 4){ if(LoadFlg == 1){ if(xhobj.status != 200){ form1.state.value=xhobj.status; alert("存在しているURLを入力してください。"); return false; } xhobj.abort(); LoadFlg = 0; } return true; } } // --></script> </head> <body onLoad="init();"> <form name="form1" id="form1" method="get" action="javascript: go();"> ページURL:http://www.google.co.jp/<input name="Url" id="Url" type="text" value=""><br> 用件:<textarea name="comment"></textarea><br> <input type="reset" value="取消"><input type="submit" value="送信"><br> ステータス確認用:<input name="state" type="text" value=""> </form> <form name="form2" id="form2" method="post" action="http://URL/mail/"> <input type="hidden" name="subject" value="問合せメール"> <input type="hidden" name="Url" value=""> <input type="hidden" name="comment" value=""> </form> </body></html>

  • 2つのjavascriptを組み合わせたい

    フォームメール用の2つのjavascriptがあります。 ●2重送信防止とデータ送信後指定ページへ遷移するjavascript ●テキストボックスが空欄だった時にアラートを表示するjavascript の2つです。 この2つを組み合わせようとしたのですが、うまく動きません。 ご指導いただきたくお願いいたします。 *************************************************** 【●2重送信防止とデータ送信後指定ページへ遷移するjavascript】【動きます】 送信ボタン押下後、2重送信を防止しながら、データ送信後は「location.href = "finish.html"」でfinish.htmlを表示します。 <script type="text/javascript" src="js/jquery.js"></script> <script> jQuery(function($) { $('#form1').submit(function(event) { // HTML送信キャンセル event.preventDefault(); //フォーム要素取得 var $form = $(this); // 送信ボタンを取得 // (後で使う: 二重送信防止) var $button = $form.find('button'); // 送信 $.ajax({ url: $form.attr('action'), type: $form.attr('method'), data: $form.serialize() + '&delay=1', timeout: 10000, // 送信前 beforeSend: function(xhr, settings) { // ボタン無効二重送信防止 $button.attr('disabled', true); }, // 応答後 complete: function(xhr, textStatus) { // ボタン有効再送信許可 $button.attr('disabled', false); }, // 通信成功処理 success: function(result, textStatus, xhr) { // 入力値初期化 $form[0].reset(); location.href = "finish.html"; }, // 通信失敗処理 error: function(xhr, textStatus, error) { alert('retry');} }); }); }); </script> <form name="form1" id="form1" method="POST" name="form1" action="insert.php"> <input type="text" name="tel" value="" /> <input type="text" name="fax" value="" /> <input type="submit" value="送信A"> </form> *************************************************** 【●テキストボックスが空欄だった時にアラートを表示するjavascript】【動きます】 テキストボックスが空欄だったらアラートを表示します。 <script> function check3() {   var tel3 = document.form1.tel.value;   var fax3 = document.form1.fax.value;   var isValid = true;   if (!tel3) {     alert("電話未入力");     isValid = false;   }   if (!fax3) {     alert("FAX未入力");     isValid = false;   }   if (!isValid) {     return;   }   document.form1.submit(); } </script> <form name="form1" id="form1" method="POST" name="form1" action="insert.php"> <input type="text" name="tel" value="" /> <input type="text" name="fax" value="" /> <input type="submit" value="送信B" onclick="check3();"> </form> *************************************************** 【上記の2つを組み合わせてみました。】【動きません】 テキストボックスが空欄だったらアラートを表示しながら2重ボタン排除&finish.htmlに遷移というものです。 【結果】 「問題なく動くjavascript」2つを単純に組み合わせただけなのですが、 finish.htmlに遷移せずinsert.phpが表示されます。ご指導宜しくお願いします。 <script type="text/javascript" src="js/jquery.js"></script> <script> jQuery(function($) { $('#form1').submit(function(event) { event.preventDefault(); var $form = $(this); var $button = $form.find('button'); $.ajax({ url: $form.attr('action'), type: $form.attr('method'), data: $form.serialize() + '&delay=1', timeout: 10000, beforeSend: function(xhr, settings) { $button.attr('disabled', true); }, complete: function(xhr, textStatus) { $button.attr('disabled', false); }, success: function(result, textStatus, xhr) { $form[0].reset(); location.href = "finish.html"; }, error: function(xhr, textStatus, error) { alert('retry');} }); }); }); </script> <script> function check3() {   var tel3 = document.form1.tel.value;   var fax3 = document.form1.fax.value;   var isValid = true;   if (!tel3) {     alert("電話未入力");     isValid = false;   }   if (!fax3) {     alert("FAX未入力");     isValid = false;   }   if (!isValid) {     return;   }   document.form1.submit(); } </script> <form name="form1" id="form1" method="POST" name="form1" action="insert.php"> <input type="text" name="tel" value="" /> <input type="text" name="fax" value="" /> <input type="submit" value="送信B" onclick="check3();"> </form>

  • javaScriptでアラート設定を教えてください。

    現在入力フォームを作成しておりますが、どうしても設定できない部分がありますので、教えてください。 下記のようなスクリプトを記述していますが、「ナンバー」のエラー表示部分に、半角数字3桁のみの入力設定を行いたいです。 それ以外を入力するとエラーが表示されるように設定を行いたいです。 宜しくお願い致します。 <script> function WriterCheck() { var str = document.dataInputForm.name.value; if( str.match( /[^A-Za-z\s.-]+/ ) ) { alert("名前は、半角英文字のみで入力して下さい。"); return false; } return true; } function CheckForm(dataInputForm) { var FormOK = false; if (dataInputForm.no.value == "") { FieldControl(dataInputForm.To, "ナンバーが未入力です。"); }else if (dataInputForm.title.value == "") { FieldControl(dataInputForm.To, "タイトル名が未入力です。"); }else if (dataInputForm.name.value == "") { FieldControl(dataInputForm.To, "名前が未入力です。"); }else { FormOK = true; } return FormOK; } function FieldControl(element, message) { alert(message); } </script>

  • テキストボックスを無効にすると値が取得できない

    javascriptでこのようにテキストボックスを無効に してフォームを送信するとphp側でvalueの値が取得できないのですが、入力無効にすると valueは送られないんでしょうか? <form> <input type="text" id="sample" name="sample" value="値" /> </form> スクリプト .document.getElementById('sample').disabled = true; valueにはphpで値をセットし、それをテキストボックスで編集できないようにして 値を飛ばそうとしたのですがテキストボックスのvalueの値が来てないようです。 自分なりに考えたんですが、送信する瞬間だけ(submitボタンが押された時) テキストボックスを有効に戻すようにコードを書いているのですが これ以外で何かありますか? ---このように対処--- <form onsubmit="return disb()"> <input type="text" name="sample" value="値" /> </form> スクリプト document.getElementById('sample').disabled = true; function disb(f){ f.sample.disabled = false; }

  • テキストボックスに入力されたらラジオボタンにチェック

    いつもお世話になっております。 タイトル通りなのですが テキストボックスに入力された時に、チェックボックスや ラジオボタンににチェックが付くようなJavaScriptを思考しています。 test.php ---------------------------------------- <form name="form1" method="post" action="test.php"> <input type="checkbox" name="235[]" value="1"> <input name="394" type="text" style="ime-mode: active" onchange="text_check('235')" value="" /> </form> script.js ---------------------------------------- function text_check(nm) {  obj = document.form1;  alert(obj.elements[nm + '[]'].length); // アラートで「undefined」と出てしまう。  for( i=0; i<obj.elements[nm + '[]'].length; i++){   obj.nm[i].checked = true;  } } フォームのラジオボタン、テキストボックスのname属性は 数字じゃない場合は、問題なさそうなのですが 数字の場合だとうまく動作してくれません。 name属性を変更することは考えていません。 ご教示よろしくお願いいたします。

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