ざっとですけれども
<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で質問しましょう!
似たような質問が見つかりました
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- HTML・CSS ただいま勉強始めたての初心者です。フォームを縦並べにしたいです。 2 2022/11/20 17:18
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript javascriptで移動ボタンを押した際に遷移するボタンを追記したい 1 2022/11/29 03:02
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
チェックボックスのON/OFFに応...
-
チェックボックスの設定
-
チェックボックスのON/OFFでVal...
-
【jsp/Java】チェックボックス...
-
チェックボックスを使って条件検索
-
チェックボックスが複数ある場...
-
複数のチェックボックス項目が...
-
JSP内で可変するチェックボック...
-
Objective-Cでチェックボックス...
-
javascriptでチェックボックス...
-
背景色を変えて未入力チェック...
-
メールフォームの未入力チェッ...
-
return trueとreturn falseの用...
-
プルダウン 項目が多いので先頭...
-
submitボタン押下時にPOSTされ...
-
onchangeイベントを強制的に発...
-
大文字か小文字かを判断する方法
-
【jQuery】input nameの文字列...
-
Selectボックスの幅を自動で広...
-
ラジオボタンにタブインデック...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【jsp/Java】チェックボックス...
-
チェックボックスのON/OFFでVal...
-
チェックボックスのON/OFFに応...
-
複数のチェックボックス項目が...
-
checkboxをクリックしてリロー...
-
チェックボックスの設定
-
チェックボックスで指定したも...
-
フォームのチェックボックスの...
-
チェックボックス
-
配列のチェックボックスをjavas...
-
一つのチェックボックスのON/OF...
-
チェックボックスが複数ある場...
-
スクリプト内でチェックボック...
-
特定のID(またはクラス)で括ら...
-
チェックボックスに連動するテ...
-
<input type="checkbox" checke...
-
チェックボックスに全てチェッ...
-
Nameは配列で、チェックされた...
-
EclipseでSpringを使用し、テー...
-
チェックボックスとラジオボタ...
おすすめ情報