<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ボタンのとき、
うまくいきません(アラートは出るが、フォームに戻らない)。
回避策を教えてください。
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>
思っていた書き方ではなかったら、お返事下さい。
この回答への補足
ありがとうございます。
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で記述しています。
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>
No.3
- 回答日時:
今回は、k_satoさんがお急ぎのようでしたので、いきなりスクリプトを書いてしまいましたが、ちょっとまとめておきます。
1.ラジオボタンの「on」「off」は、
フォームの名前.ラジオボタンの名前[インデックス].checked
の true か false をひとつずつ調べます。
ちなみに、
ラジオボタンの名前.length
は、同じ名前(NAMEプロパティの値が同じ)をもつラジオボタンの数です。
2.一番下のスクリプトが上手くいかなかったのは、
テキストボックスの場合
入力漏れがあれば Submitに false を返す
ラジオボタンの場合
チェックされていれば Submitに true を返す
と、判断が反対になっていたからだと思います。
3.真下のスクリプトを少し工夫すると、抜けがある項目をすべて表示するということもできます。
(今のままだと、名前が抜けていれば、プレゼントが抜けていても「名前をいれてね」としか出ませんから)
ヒントは
var msg= ""
if(名前が抜けてたら){
msg = msg + "名前 "
}
です。(名探偵コナン(アニメ版)の次週のヒントなみですな・・・ほとんど答え?)
では、参考になりましたら幸いです。
この回答への補足
本当にありがとうございます!
さっそく、教えていただいた通りに書き直して試してみます。
うまくプログラムが流れてくれるといいのですが・・・。
のちほど、またご報告します。
望んでいたプログラムの流れが出来ました!
kana-tan様のおかげです・・・。
本当にありがとうございました(^-^)
ちなみにアラートのOKを押した後、カーソルを
自動で空欄部分に戻す方法も付け足しました。
function check(fm){
if(isFilled(fm.namae) == false){
alert("お名前を入力して下さい")
fm.namae.focus();
return false;
}
・
・
だけど、radioボタンだけは無理なんですよね。
でも、大満足です。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
return trueとreturn falseの用...
-
ドラッグ&ドロップ禁止について
-
数式から不要なカッコを取り除...
-
未入力のラジオボタンに、alert...
-
Visual Studioのデザインでの非...
-
onSubmit=の後ろは複数可能でし...
-
コピペを禁止するtextarea
-
半角英数字のみの入力にエラー...
-
slickのレスポンシブ > center...
-
COBOLの数字チェック
-
JavaScriptde途中で、「exit」...
-
ピリオド区切りで 4桁.2桁.2桁 ...
-
リロードしないようにするには
-
値をチェックしたい
-
プルダウン選択を変更すると、...
-
チェックボックス付きのテーブ...
-
value内に変数を入れたい
-
<JavaScript>tableタグを入力不...
-
【javascript・PHP】プルダウン...
-
JSPとJavaScriptの連携について...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
return trueとreturn falseの用...
-
slickのレスポンシブ > center...
-
COBOLの数字チェック
-
コピペを禁止するtextarea
-
JavaScriptde途中で、「exit」...
-
未入力のラジオボタンに、alert...
-
ラジオボタンのNullチェック
-
テキストボックスに数字しか入...
-
数式から不要なカッコを取り除...
-
半角英数字のみの入力にエラー...
-
フォームの入力チェックをする...
-
変数の値によってsubmit後の動...
-
ツリービューのチェックボック...
-
ドロップダウンリストボックス...
-
ドラッグ&ドロップ禁止について
-
テキストボックスをEnterキーで...
-
入力された日付の正規表現の仕...
-
Visual Studioのデザインでの非...
-
正規表現で複数マッチ条件で悩...
-
度胸試しのJavaScript
おすすめ情報