• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:フォームの値を)

javascriptでフォームの値をチェックする方法

このQ&Aのポイント
  • javascriptを使用して、フォームの値をチェックする方法について教えてください。
  • チェックボックスの数に応じて、新規登録・変更・削除を制御する方法について教えてください。
  • エラーメッセージやデバッグ方法についても教えていただけると助かります。

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

  • ベストアンサー
回答No.1

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>請求書マスタ一覧・検索</title> <script type="text/javascript"> function checker(fObj){ count = 0; for (i=0; i < 12; i++){ if ((document.forms["BILLFORM"].elements[i] != undefined) && (document.forms["BILLFORM"].elements[i].checked)){ count++; } } if (fObj==document.forms["BILLFORM"].elements['regist-change']){ if (count == 0){ location.href='bill_regist.html'; }else if (count == 1){ location.href='bill_change.html'; }else{ alert("複数選択されています"); } }else if(fObj==document.forms["BILLFORM"].elements['remove']){ location.href='bill_main.html'; } } </script> </head> <body> <form action="logout.html"> <div align="right"><input type="submit" name="logout" value="ログアウト"></div> </form> <form id="BILLFORM"> <table> <tbody> <tr> <td colspan="8"> <div align="right"> <input type="button" name="regist-change" value="登録/変更" onclick="checker(this);"> <input type="button" name="remove" value="削除" onclick="checker(this);"> </div> </td> </tr> <tr> <td nowrap> 請求書ID </td> <td nowrap> 作業担当者ID </td> <td nowrap> 請求先企業名ID </td> <td nowrap> 請求書番号 </td> <td nowrap> 契約MAPID </td> <td nowrap> 交通費 </td> <td nowrap> その他経費 </td> <td> </td> </tr> <tr> <td> 12345678: </td> <td> 12345678: </td> <td> yyyy/mm/dd/hh/mm/ss: </td> <td> yyyy/mm/dd/hh/mm/ss: </td> <td> 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890: </td> <td> 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890: </td> <td> 12345678: </td> <td> <input type="checkbox" value="00000001"> </td> </tr> </tbody> </table> </form> </body> </html> ★一応当方環境のMinefieldとIE7で動作することを確認したが,文法的に正しいかどうかは検証していない ☆主な変更点: 1.吐き出されたエラーメッセージを元にscript要素のlanguage属性を削除 2.吐き出されたエラーメッセージを元に行区切り子として;を追加 3.比較演算子は==であって===ではないので修正。 4. document.BILLFORMという書式で当方Firefox(Minefield)でエラーが出たため,document.forms["BILLFORM"]という書式に変更。 5. 4と同様、fObj===document.BILLFORM.removeをdocument.forms["BILLFORM"].elements['remove']と変更 6. 比較演算子で比較対象の型を意識。 "0"→0 "1"→1 7.特にregist-changeだとregistとchangeの差だと思われるのもあり また、 document.forms[BILLFORM].name===regist-changeを fObj==document.forms["BILLFORM"].elements['regist-change'] と変更 8.念のためdocuments.forms[BILLFORM].elements[i]がundefinedでないか調べることにした。 ★なお、実際の変更作業は各htmlファイルでcgi等を利用してサーバとの通信が行われると思われるため、記述は一切していないし、するつもりもない。

dindin_001
質問者

お礼

回答ありがとうございます! elementsが必要だったんですね。 また、必要だったのはHTMLのサンプルでしたので実際の変更作業は後々考えることにしています。 ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A