OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

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

  • すぐに回答を!
  • 質問No.152566
  • 閲覧数296
  • ありがとう数2
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 33% (1/3)

<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ボタンのとき、
うまくいきません(アラートは出るが、フォームに戻らない)。

回避策を教えてください。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答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>
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1

radioボタンのときの処理をどのように書かれているかがわからないので、新たに書いてみました。 下の書き方ではダメですか? (フォーマットを整えるために全角空白が入っているので、コピーペーストしても動きません。) <SCRIPT LANGUAGE="JavaScript"> //チェック用関数(引数はFORMオブジェクト) function check(fm) ...続きを読む
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

お礼率 33% (1/3)

ありがとうございます。
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で記述しています。
投稿日時 - 2001-10-17 11:55:39


  • 回答No.3

今回は、k_satoさんがお急ぎのようでしたので、いきなりスクリプトを書いてしまいましたが、ちょっとまとめておきます。 1.ラジオボタンの「on」「off」は、 フォームの名前.ラジオボタンの名前[インデックス].checked の true か false をひとつずつ調べます。 ちなみに、  ラジオボタンの名前.length   は、同じ名前(NAMEプロパティの値が同じ)をもつラジ ...続きを読む
今回は、k_satoさんがお急ぎのようでしたので、いきなりスクリプトを書いてしまいましたが、ちょっとまとめておきます。

1.ラジオボタンの「on」「off」は、
フォームの名前.ラジオボタンの名前[インデックス].checked
の true か false をひとつずつ調べます。
ちなみに、
 ラジオボタンの名前.length  
は、同じ名前(NAMEプロパティの値が同じ)をもつラジオボタンの数です。

2.一番下のスクリプトが上手くいかなかったのは、
 テキストボックスの場合
   入力漏れがあれば  Submitに false を返す
 ラジオボタンの場合
   チェックされていれば Submitに true を返す
と、判断が反対になっていたからだと思います。

3.真下のスクリプトを少し工夫すると、抜けがある項目をすべて表示するということもできます。
(今のままだと、名前が抜けていれば、プレゼントが抜けていても「名前をいれてね」としか出ませんから)

ヒントは

var msg= ""
if(名前が抜けてたら){
 msg = msg + "名前 "
}

です。(名探偵コナン(アニメ版)の次週のヒントなみですな・・・ほとんど答え?)

では、参考になりましたら幸いです。 
補足コメント
k_sato

お礼率 33% (1/3)

本当にありがとうございます!

さっそく、教えていただいた通りに書き直して試してみます。
うまくプログラムが流れてくれるといいのですが・・・。

のちほど、またご報告します。
投稿日時 - 2001-10-17 15:27:56
お礼コメント
k_sato

お礼率 33% (1/3)

望んでいたプログラムの流れが出来ました!
kana-tan様のおかげです・・・。
本当にありがとうございました(^-^)

ちなみにアラートのOKを押した後、カーソルを
自動で空欄部分に戻す方法も付け足しました。

function check(fm){
 if(isFilled(fm.namae) == false){
  alert("お名前を入力して下さい")
   fm.namae.focus();
  return false;
 }
 ・
 ・
だけど、radioボタンだけは無理なんですよね。
でも、大満足です。

本当にありがとうございました。
投稿日時 - 2001-10-17 16:20:06
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ