ざっとですけれども
<form action="**" name="myform" onsubmit="return Check()" method=post>
<input type="checkbox" name="Erasedata" id="Erasedata" value="1" >
<input type="checkbox" name="Erasedata" id="Erasedata" value="2" >
・・・
<input type="checkbox" name="Erasedata" id="Erasedata" value="5" >
<input type="submit" value="選択されたものを削除する">
このようなチェックボックスがあったとして
function Check()
{
for (i=0;i<document.myform.length;i++)
{
if(document.myform.Erasedata[i].checked==true)
{return true;}
}
alert("どこかにチェックを入れて下さい ");
return false;
}
といった感じで未入力チェックをしています。
チェックボックスが複数の場合はうまく動くのですが、チェックボックスがひとつだとうまくいきません。スクリプトで何か問題があるようでしたらご指摘お願いできませんでしょうか。よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
そうですね。
あんまりうるさくいうと嫌がられるのであえて指摘しませんでしたが、向学のためせっかくなのでいくつかご指摘を。
・id="Erasedata"が複数見受けられます。idはユニークでないと意味が
ありません。
・formに名前をつけて管理するやり方は古いので現在非推奨です。
・今回の命題が「Erasedataのどれか1つだけにチェックをつけさせる」
のであればcheckboxではなくradioでやってください
・複数選択が可能であればcheckboxにErasedataという同じ名前をつけて
やるのはあまり良い方法ではありません。
せめて「Erasedata[]」のようにサーバー側で配列として認識できるように
した方がよいでしょう。
・回答でもやりましたが、フラグを使って処理をしたほうが汎用性があがります。
チェックボックス以外のチェックもあるでしょうから・・・。
・document.myformをforでまわすのに、孫要素(子要素の子要素)
document.myform.Erasedata[i]のcheckedをチェックするのは無理があります。
ループで回してチェックできるのは子要素までと考えてください。
・回答にもあるとおり、Checkで受け渡すときに自分自身「this」を
渡してやると、汎用性があがります。
・細かい話だと、コーテーションの付け方に一貫性がないとか、checkbox
の要素に表示するテキストがないとか、inputタグを閉じるときはスラッシュを
入れたほうがよいとか、まぁいろいろ・・・
貴重なご指摘ありがとうございます。
とても参考になりました。
基本的なところをもうちょっと勉強してみます。
また機会がありましたらよろしくお願いいたします。
No.2
- 回答日時:
つっこみどころが多いソースですが、とりあえず1つでも動くようにするには
以下のようにしてみてください。
<script>
function Check(f){
var flg=false;
for (i=0;i<f.length;i++){
if(f[i].type=="checkbox" &&f[i].checked==true) flg=true;
}
if(!flg) alert("どこかにチェックを入れて下さい ");
return flg;
}
</script>
1:<br>
<form onsubmit="return Check(this)">
<input type="checkbox" name="E1" id="Erasedata" value="1" >
<input type="checkbox" name="E1" id="Erasedata" value="2" >
<input type="submit" value="go!">
</form>
2:<br>
<form onsubmit="return Check(this)">
<input type="checkbox" name="E2" id="Erasedata" value="1" >
<input type="submit" value="go!">
</form>
この回答への補足
ありがとうございます。
ばっちり動いたんですが、その他にも突っ込みどころがございましたら、どんどん突っ込んでいただけませんでしょうか?
何卒宜しくお願いいたします。
No.1
- 回答日時:
チェックしたいのがチェックボックスだけなら for文の終了条件を
i<document.myform.Erasedata.length
にして見ましょう
document.myform.lengthですと formの子要素の数になります
チェックが入っていない場合 Submitボタンなどまでカウンタが進んでしまい チェックボックスの添え字の範囲を超えてしまいます
この回答への補足
回答ありがとうございます。
for (i=0;i<document.myform.Erasedata.length;i++)
にしてみたのですが、checkboxが一つだとalertが出てしまいます。
何か他に問題があるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
checkboxをクリックしてリロー...
-
チェックボックスのON/OFFでVal...
-
【jsp/Java】チェックボックス...
-
アンケートページでチェックボ...
-
ラジオボタンとチェックボック...
-
選択したラジオボタンが画面の...
-
フォームのチェックボックスの...
-
Objective-Cでチェックボックス...
-
チェックボックスの使い方
-
チェックボックスを使って条件検索
-
特定<table>内の<td>の色を変える
-
return trueとreturn falseの用...
-
プルダウン 項目が多いので先頭...
-
value内に変数を入れたい
-
ラジオボタンのチェックが外れ...
-
ラジオボタンにタブインデック...
-
チェックボックス付きのテーブ...
-
確認ダイアログの出し方(JavaS...
-
プルダウンで選択すると、DBの...
-
<input>の選択肢をプルダウンメ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
チェックボックスのON/OFFでVal...
-
【jsp/Java】チェックボックス...
-
チェックボックスのON/OFFに応...
-
checkboxをクリックしてリロー...
-
チェックボックスの設定
-
チェックボックスで指定したも...
-
スクリプト内でチェックボック...
-
確認ページからフォームページ...
-
複数のチェックボックス項目が...
-
クリアボタンの動作について
-
フォームのチェックボックスの...
-
チェックボックスとラジオボタ...
-
javascriptでチェックボックス...
-
チェックボックスで合計値を計...
-
チェックボックスを利用した表...
-
checkboxの文字連結の方法を教...
-
JSP内で可変するチェックボック...
-
JavaScriptからの戻り値
-
一つのチェックボックスのON/OF...
-
背景色を変えて未入力チェック...
おすすめ情報