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

回避策を教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

全体のスクリプトが分からないのでとりあえず書いてみました。


多分下の書き方で、大丈夫だと思うのですが・・・
少し長いですが、参考にして下さい。(プログラムが余り上手くないのはご勘弁)

<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>
    • good
    • 0

今回は、k_satoさんがお急ぎのようでしたので、いきなりスクリプトを書いてしまいましたが、ちょっとまとめておきます。



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

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

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

ヒントは

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

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

では、参考になりましたら幸いです。 

この回答への補足

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

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

のちほど、またご報告します。

補足日時:2001/10/17 15:27
    • good
    • 0
この回答へのお礼

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

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

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

本当にありがとうございました。

お礼日時:2001/10/17 16:20

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で記述しています。

補足日時:2001/10/17 11:55
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qアラートマークの意味を教えてください。

バナー広告の注意事項にアラートマークは使用不可と書いてあるのですが、アラートマークってどういう意味ですか?

Aベストアンサー

三角の中に”!”が入っているようなマークということじゃないのでしょうか?
パソコンのシステムが表示する警告の表示と紛らわしい広告は禁止ってことだと思います。

Qreturn {c : c, h : h}について

私以外が作ったjavascriptプログラムでこのように書かれていました。

var h = null;
var c = null;
//省略
return {c : c, h : h}

このreturn文のところの意味を知りたいのです。
{x : x, y : y}という形式でプログラムすると、
どのような条件として判断されるのでしょうか?

このプログラムの意味が分かりませんでした。
もしよろしければ、教えて頂けませんか。
よろしくお願い致します。

Aベストアンサー

まず、Objectの表記方法はご存知ですか?
var o={a:1, b:2, c:"3"}
とかいう表記はObjectを表し、
alert(o.a)
という形で、プロパティを呼び出したり、という使い方があります。

なんてのは、「javascript オブジェクト初期化子」で検索していただくとして、


本題。
仕様上、functionは1個または0個の戻り値しか返せません。
  例:function f(){return 1;return 2;} はreturn 1が実行された時点で終了。
ですが、2個以上の戻り値が必要になることもあり、(人それぞれ?)
  例:角度を指定し、sin と cos の両方の値を返したい
    画像の縦と横のサイズを知りたい
そんなときに複数の値をプロパティとして持った一つのObjectにまとめてしまえば、
戻り値は一つですむ、という解決方法があったりします。(質問内容はこれにあたります)
配列で、なんていうのもあったり。


function f(t){return {s:Math.sin(t), c:Math.cos(t),t:Math.tan(t)}}
について、
var r=f(3.14)
alert(r.s)//sinの値を参照
alert(r.c)//cos
といったように使われます。私は使ったことないです。

独り言:あぁ、メモリの悲鳴が・・・

まず、Objectの表記方法はご存知ですか?
var o={a:1, b:2, c:"3"}
とかいう表記はObjectを表し、
alert(o.a)
という形で、プロパティを呼び出したり、という使い方があります。

なんてのは、「javascript オブジェクト初期化子」で検索していただくとして、


本題。
仕様上、functionは1個または0個の戻り値しか返せません。
  例:function f(){return 1;return 2;} はreturn 1が実行された時点で終了。
ですが、2個以上の戻り値が必要になることもあり、(人それぞれ?)
  例:角度を...続きを読む

Qこのアラートの意味は?「You have exceeded the number of licensed functions」

CDからデータをインストールしようとしたら下記のアラートが出ました。

You have exceeded the number of licensed functions

OKを押してすんなりデータはインストールできましたが、この意味をググっても判りませんでした。

お詳しい方、ぜひ教えてください。

Aベストアンサー

どんなデータか分かりませんが、ライセンスで与えられた機能の使用回数を超えた、とも受け取れます。

Q(function(){})()の意味

(function(){})() の意味がよくわからずに困っています。

下記の2タイプではどう意味が変わってくるのでしょうか?
(1)var fuga = function(){};
(2)var fuga = (function(){})();

下記のコードで実験してみたところ、
---------------------
var fuga = function(){
this.obj = 'value';
};

var fuga = (function(){
return {
obj = 'value';
};
})();
---------------------
(1)の場合は、newしないとfugaオブジェクトのメンバを使用できない、
(2)の場合は、newしなくてもfugaオブジェクトのメンバを使用できるようなのですが、
(2)で(function(){})を取り除いて出てくる()はnewのエイリアスだったりするのでしょうか?

Aベストアンサー

var fuga = (function(){})();

var fuga = function(){}();
と同じです
つまり関数を定義してすぐ呼んでいるだけです

QNFL中継中に表示される『nugget alert』の意味とは

先日、NFLのテレビ中継を観戦していたところ画面の片隅に『nugget alert』という表示が出てきました。その後の放送中にも、何かのタイミングなのか度々出てきたのですが意味が分からなく試合どころではなくなってしまいました。『nugget alert』の意味をご存知の方がいらっしゃったら是非教えて下さい!

Aベストアンサー

 私も 100% の自信はないのですが、おそらくフィールドリポーターの
トニー・シラグサ( 元プロボウルDT )による、「 シラグサが気になった
ちょっと面白いエピソード 」みたいなものらしいです。

 シラグサはイタリア系の陽気なキャラクターで、一応は物知り( Nuggets
of Wisdom )ということになっているらしいです。この場合の Nugget は
「 塊 」の意味で、チキンナゲットのナゲットと一緒です。

※転じて「 金塊 」の意味もあり、NBAのデンバー・ナゲッツは
 ゴールドラッシュからイメージしたチーム名になっています。

 そこで、試合がダレてきたときなどに、「 シラグサのちょっと豆知識 」
みたいな感じで、彼が気になった変な観客とか、選手の変な髪形とか、
そういった軽いエピソードに触れるようです。

 ちなみに本場の米国人でさえ、「 って言うか、ナゲットアラートって
いったい何だよ!? 」と思っているらしく、米国の掲示板に質問が多数
挙げられています。よって、米国人なら誰でもわかる決まり文句、と
いうものではないみたいです。

 私も 100% の自信はないのですが、おそらくフィールドリポーターの
トニー・シラグサ( 元プロボウルDT )による、「 シラグサが気になった
ちょっと面白いエピソード 」みたいなものらしいです。

 シラグサはイタリア系の陽気なキャラクターで、一応は物知り( Nuggets
of Wisdom )ということになっているらしいです。この場合の Nugget は
「 塊 」の意味で、チキンナゲットのナゲットと一緒です。

※転じて「 金塊 」の意味もあり、NBAのデンバー・ナゲッツは
 ゴールドラッシュからイ...続きを読む

Qreturn trueとreturn falseの用途・違いは・・・?

functionやifなどで「return true」「return false」というのを見かけますが、これの違いを教えてください。あと最近

if(!obj){
return true;
}

という文を見かけました。
これがifじゃなくてfunctionなら、ブール値が返るのでtrueとfalseの違いがありますが、このifではなぜreturn trueを使っているのか分かりません。「return false」を書くと、ifやfunctionを強制的に抜ける「break」と同じ役割を果たすと聞いた事がありますが、trueは知りません。

・・・というより、ifでreturnを使う意味もよく分からなくなってきました。
if文は何も返りませんし、返したところで受け取る方法がありませんよね?
これもどういう意味なのか、教えてください。
よろしくお願いします。

Aベストアンサー

return TRUE; はその関数が正常に終了(期待した結果)することを
示し、return FALSE; は関数が失敗(期待しなかった結果)と言えば
わかりやすいでしょうか。

if文はifの後の式が、真か偽(0)かを判定しているものです。
if(!obj){ は、objが偽ならreturn true;とするという関数の仕様
になっていますね。if(obj==0)ならtrue(1)を返すという具合です。

Qjavascriptのアラートを画面の中に表示させるには?

お世話になっております。javascriptを見よう見まねでクイズ問題を作成しようと挑戦しています。
問題を解いた結果を、alertで表示させていますが
これをアラートではなく、WEB画面の中に表示させるのには
どうしたらいいのでしょうか?

例)
alert(tm + "秒でクリア!!");
mondaisuu =mondaisuu +1
if (miss>0) {ruiseki=ruiseki+1}
alert(ruiseki +"回ミス"+"で問題数は"+mondaisuu)

↑の2つのアラートを、画面の下の方に分けて表示させたい。

Aベストアンサー

「回答する」ボタンを押すと、二箇所に文言を表示させる具体的な例

<script>
function 結果表示(id, message) { document.getElementById(id).textContent = message; }
function 回答() {
結果表示('アラートっぽい枠', '次の問題にいきましょう!');
結果表示('告知っぽい枠', '1回ミスで問題数は2');
}
</script>
<style>
#アラートっぽい枠 { font-size:150%; text-align:center; border:thick solid red; border-radius:1em; }
#告知っぽい枠 { font-size:100%; text-align:center; border:thick solid darkred; border-radius:1ex; }
</style>

<p id="アラートっぽい枠"></p>
<p id="告知っぽい枠"></p>

<button onclick="回答()">回答する</button>

「回答する」ボタンを押すと、二箇所に文言を表示させる具体的な例

<script>
function 結果表示(id, message) { document.getElementById(id).textContent = message; }
function 回答() {
結果表示('アラートっぽい枠', '次の問題にいきましょう!');
結果表示('告知っぽい枠', '1回ミスで問題数は2');
}
</script>
<style>
#アラートっぽい枠 { font-size:150%; text-align:center; border:thick solid red; border-radius:1em; }
#告知っぽい枠 { font-size:100%; text-align:center; border:thick solid d...続きを読む

QJavaScriptで【window.google={kHL:"ja"};】という記述はどういう意味?

JavaScriptで【window.google={kHL:"ja"};】という記述はどういう意味?


YOUTUBE日本語版
http://jp.youtube.com/
のHTMLソースを見ていたら、



<script type="text/javascript">
    window.google={kHL:"ja"};
</script>


という記述を目にしたのですがこれはどういう意味あいというか目的のものなのでしょうか?


教えていただければ幸いです。

Aベストアンサー

これは、window.googleに'kHL'というキー(値は'ja')を持つ連想配列を
作成しています。

JavaScriptでの連想配列は

var 変数名 = {
キー : '値',
キー : '値',
:,
キー : '値'
};

というような感じで作成します。
キーはダブルクォートまたはシングルクォートで囲まなくても
いいようです。

参考URL:http://javascriptist.net/docs/basic_hash.html,http://www.openspc2.org/JavaScript/kouza2007/array/hash/index.html

Qnetscreenアラート!DNS?

時々netscreenにて以下の様なアラートを大量に検出します。
------------------------------------------------------
system alert 00012 UDP Flood has been detected!, From 74.124.205.2/53 to 「LAN側DNSサーバ(スレーブ)のIP」/「src port」, using protocol UDP (on zone Untrust,interface ethernet3) occurred 1 times

system alert 00012 UDP Flood has been detected!, From 193.0.14.129/53 to 「LAN側DNSサーバ(スレーブ)のIP」/「src port」, using protocol UDP (on zone Untrust,interface ethernet3) occurred 1 times

system alert 00012 UDP Flood has been detected!, From 192.36.148.17 to 「LAN側DNSサーバ(スレーブ)のIP」/「src port」, using protocol UDP (on zone Untrust,interface ethernet3) occurred 1 times

system alert 00012 UDP Flood has been detected!, From 202.12.27.33/53 to 「LAN側DNSサーバ(スレーブ)のIP」/「src port」, using protocol UDP (on zone Untrust,interface ethernet3) occurred 1 times

system alert 00012 UDP Flood has been detected!, From 192.5.5.241/53 to 「LAN側DNSサーバ(スレーブ)のIP」/「src port」, using protocol UDP (on zone Untrust,interface ethernet3) occurred 1 times

system alert 00012 UDP Flood has been detected!, From 192.33.4.12/53 to 「LAN側DNSサーバ(スレーブ)のIP」/「src port」, using protocol UDP (on zone Untrust,interface ethernet3) occurred 1 times

system alert 00012 UDP Flood has been detected!, From 198.41.0.4/53 to 「LAN側DNSサーバ(スレーブ)のIP」/「src port」, using protocol UDP (on zone Untrust,interface ethernet3) occurred 1 times
---------------------------------------------------
発生は決まって23:55~翌0:55迄くらいの1時間くらいで、今回は118件くらい来ています。

どうも、外部のDNSサーバからの通信なのでしょうが、ソースポートが53(DNS)・・・・。戻りパケットか?? じゃあこっちのDNS(スレーブ)が何かしてるのか?? っと混乱しています。

何かネットワーク or DNSサーバの設定がまずいのでしょうか?

情報が少ないですが、原因として考えられることをご教授お願いしますm(__)m

時々netscreenにて以下の様なアラートを大量に検出します。
------------------------------------------------------
system alert 00012 UDP Flood has been detected!, From 74.124.205.2/53 to 「LAN側DNSサーバ(スレーブ)のIP」/「src port」, using protocol UDP (on zone Untrust,interface ethernet3) occurred 1 times

system alert 00012 UDP Flood has been detected!, From 193.0.14.129/53 to 「LAN側DNSサーバ(スレーブ)のIP」/「src port」, using protocol UDP (on zone Untrust,interface e...続きを読む

Aベストアンサー

LAN側DNSサーバーから、インターネット上のルートDNSサーバーへの通信の、
戻りパケットをUDP-Flood攻撃と検知してしまい、
通信を遮断している状態だと思われます。

Netscreenの設定画面の、Screening → Screenメニューを開き、
UDP Flood ProtectionのThreshold値を大きくしてみてください。
(※UDP Flood Protectionのチェックを外すのは推奨されません)

QIE7のJavascriptで return false をしてもリンクしてしまう

これまでjavascript無効の人のために

<a href="test.html" onclick="test();return false;">link</a>

という感じで、無効の人はリンク先へ飛んで、有効の人はJavascriptを実行して処理する、といったコードを使っていました。
しかし、IE7では、onclickで false が帰ってきても、そのままリンクにいってしまうようで困っています。 IE6、Firefox2では思うように(onclickだけで止まる)動いてくれます。

もうこれは仕様のため、全面的に書き直さなければならないのでしょうか?
ご存じの方おられましたらご教示いただけると幸いです。

Aベストアンサー

test()の中でエラーになってるだけだと思ったのですが、、、?
test()はどの様な内容でしょうか?


<a href="aaa.html" onclick="return false;">検証</a>
これで動作が止まりますか?


IE6とIE7のチェックはどの様にされています?
パソコンを2台用意するとか、マルチブートしてるとか・・・

IE7 StandAloneを入れていると、動作がかなり変わるらしいですが、
インストールしていませんか?
http://tredosoft.com/IE7_standalone

今まで動いていたスクリプトがこれをインストールすると動かなくなったという話や、
CSSの表示の仕方も変わると聞いたことがあります。
もしそうなら、対策は、基本的にはIE7 Stand Aloneをアンインストールしかないと思います。


人気Q&Aランキング

おすすめ情報