• ベストアンサー

JavaScript でメールアドレスのチェックをするには・・・?

入力フォームで正しいメールアドレスが入力されたのかを確認するため、以下のようなJavaScriptを記述しましたが、動作しません。 関数FormCheckは動作するのですが、関数Checkは動作しません。 現状では、メールアドレスを入力する欄に「www」とだけ入力しても チェックされないので、その他の入力項目がきちんと入力できていれば メール送信されてしまいます。 どのようにすればこのCheck関数が動作するのかどなたか教えていただけないでしょうか?よろしくお願いします。 --------------------Java Script 部分--------------------------- <script language="JavaScript"> <!-- //必須項目のチェック function FormCheck(Form) { Error = new Array(); i = 0; // 氏名の入力チェック if ((Form["name"]) && (Form["name"].value == "")) { Error[i] = "氏名は必須項目です。"; i++; } // メールアドレスの入力チェック if ((Form["email"]) && (Form["email"].value == "")) { Error[i] = "メールアドレスは必須項目です。"; i++; } // 質問したい支店の選択チェック if ((Form["address"]) && (Form["address"][0].selected == true)) { Error[i] = "質問したい支店は必須項目です。"; i++; } // 未入力があればアラート if (Error.length > 0) { ErrorText = Error.join("\n"); alert ("未入力項目があるので送信できません。\n\n"+ErrorText); return false; } } // --> <!-- //メールアドレスチェック var mail; function Check(){ mail = document.myform.email1.value; if(!mail.match(/.*@.*\..*/i)){ alert("メールアドレスが不正です。"); } } // --> </script> --------------------HTML 部分----------------------------------- <body> <table width="419" height="453"> <tr> <td width="732"> <form action="./cgi/test/sendmail.cgi" name="myform" method="POST" target="_self" onSubmit="return FormCheck(this);Check()"> <table width="481"> <!--氏名を入力 --> <tr> <td><strong>氏名</strong></td> <td><input type="text" name="name" size="30" maxlength="50"></td> </tr> <!--メールアドレスを入力 --> <tr> <td><strong>メールアドレス</strong></td> <td><input type="text" name="email" size="50" maxlength="60"></td> </tr> <!--支店選択 --> <tr> <td><strong>質問したい支店</strong></td> <td> <select name="address"> <option value="" selected></option> <option value="aaa@hoemail.com">A支店</option> <option value="bbb@hoemail.com">B支店</option> <option value="ccc@hoemail.com">C支店</option> </select> </td> </tr> </table> <!--送信・キャンセルボタン --> <center> <table> <tr> <td><input type="submit" name="submit" value="送 信"></td> <td><input type="reset" name="reset" value="キャンセル"></td> </tr> </table> </center> </form> </td> </tr> </table>

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

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

※質問はなるべく分かりやすくしたほうが回答を得られやすいです。 ・TABLEタグやCENTERタグなど、必要でないタグは省く ■どのようにすればこのCheck関数が動作するのか Formタグにはonsubmit属性が定義されていますが、この内容だと Check関数は値をチェックした後の事後処理に過ぎないです。 まず、FormCheck関数が値(真偽)を返した地点で、そのフォームは 値に応じて送信してしまいます。 ですので、この場合はFormCheck関数とCheck関数を一つの関数に まとめてやる必要があります。 ■なるべく元のソースを使って一つの関数にまとめてみました。 function FormCheck(Form) { var Error = new Array(); // 氏名の入力チェック if ((Form.name) && (Form.name.value == "")) { Error.push("氏名は必須項目です。"); } // メールアドレスの入力チェック if ((Form.email) && (Form.email.value == "")) { Error.push("メールアドレスは必須項目です。"); } if (!document.myform.email.value.match(/.*@.*\..*/i)){ Error.push("メールアドレスが不正です。"); } // 質問したい支店の選択チェック if ((Form.address) && (Form.address[0].selected == true)) { Error.push("質問したい支店は必須項目です。"); } // 未入力があればアラート if (Error.length > 0) { ErrorText = Error.join("\n"); alert ("未入力項目があるので送信できません。\n\n" + ErrorText); return false; } } --------HTML--------- フォームのみ抜粋 <form action="./cgi/test/sendmail.cgi" name="myform" method="POST" target="_self" onSubmit="return FormCheck(this);"> ■スクリプトに対するアドバイス ・配列の要素の追加について 元のコードではi変数をカウンタとして要素を追加していましたね。 しかし、JavaScriptでは配列に要素を追加する関数としてpush関数が 用意されています。 非常によく使われる関数なので是非利用しましょう。 Error.push("message"); ・フォーム内のエレメントへのアクセスについて Form["email"]とするのも良いのですが、この場合は通常、 変数を利用してアクセスする場合に使用されます。 そのような用途がない場合は、普通に記述したほうが いいです。 Form.email ・元のコード、Check関数について var mail; function Check(){ mail = document.myform.email1.value; if(!mail.match(/.*@.*\..*/i)){ alert("メールアドレスが不正です。"); } } 少し突っ込んだ話になりますが、apena2さんのためになると思うので お話ししようと思います。 結論からいいますと、mail変数はローカル変数として宣言したほうが良いです。 この関数では、mail変数はグローバススコープすなわち、関数外で 宣言されていますよね。でも、Check関数を見る限りグローバル変数 である必要がありませんよね。 まず、これが第一の理由です。 そして、第2の理由についてですが、パフォーマンス面でのお話になります。 少しややこしくなるので、簡単に説明します。 Check関数がmail変数を参照するときに、まずCheck関数はローカルスコープ内(関数内)に mail変数がないか探索します。そして、見つからなかった場合は、グローバルスコープ すなわち関数外を探索することになります。。。 ということは、ローカル変数を探索するのに比べて、グローバルスコープを余分に 探索しなければならないので処理に時間がかかるのです。 このように、スコープチェーン(すみません、意味は調べてください)をたどるだけで パフォーマンスが著しく低下してしまうのです。

apena2
質問者

お礼

ご回答ありがとうございました。 教えていただきましたように修正をしたいと思います。 プログラミング初心者なのでパフォーマンス面までは 考えがおよびませんでした。 大変助かりました。ありがとうございました。

その他の回答 (2)

  • okmotokun
  • ベストアンサー率59% (92/155)
回答No.2

functionは1つでいいんでないの mail.match(/.*@.*\..*/i)ではチェックする意味ない(これだとアットマークドットだけでもOK) --------------------Java Script 部分--------------------------- <script language="JavaScript"> <!-- //必須項目のチェック function FormCheck(Form) { Error = new Array(); i = 0; // 氏名の入力チェック if ((Form["name"]) && (Form["name"].value == "")) { Error[i] = "氏名は必須項目です。"; i++; } // メールアドレスの入力チェック if ((Form["email1"]) && (Form["email1"].value == "")) { Error[i] = "メールアドレスは必須項目です。"; i++; } // 質問したい支店の選択チェック if ((Form["address"]) && (Form["address"][0].selected == true)) { Error[i] = "質問したい支店は必須項目です。"; i++; } // 未入力があればアラート if (Error.length > 0) { ErrorText = Error.join("\n"); alert ("未入力項目があるので送信できません。\n\n"+ErrorText); return false; } var mail = document.myform.email1.value; if(mail.match(/^[-+\w\.]+\@[-\w\.]+\.[a-z]{2,5}$/i)==null){alert("メールアドレスが不正です。");return false;} } // --> </script> --------------------HTML 部分----------------------------------- <body> <table width="419" height="453"> <tr> <td width="732"> <form action="./cgi/test/sendmail.cgi" name="myform" method="POST" target="_self" onsubmit="return FormCheck(this)"> <table width="481"> <!--氏名を入力 --> <tr> <td><strong>氏名</strong></td> <td><input type="text" name="name" size="30" maxlength="50"></td> </tr> <!--メールアドレスを入力 --> <tr> <td><strong>メールアドレス</strong></td> <td><input type="text" name="email1" size="50" maxlength="60"></td> </tr> <!--支店選択 --> <tr> <td><strong>質問したい支店</strong></td> <td> <select name="address"> <option value="" selected></option> <option value="aaa@hoemail.com">A支店</option> <option value="bbb@hoemail.com">B支店</option> <option value="ccc@hoemail.com">C支店</option> </select> </td> </tr> </table> <!--送信・キャンセルボタン --> <center> <table> <tr> <td><input type="submit" name="submit" value="送 信"></td> <td><input type="reset" name="reset" value="キャンセル"></td> </tr> </table>

apena2
質問者

お礼

ご回答ありがとうございました。 参考にさせていただきます。

  • zxcv0000
  • ベストアンサー率56% (111/196)
回答No.1

document.myform.email1.value では、 <input type="text" name="email" ...> の value を拾えないでしょう。

apena2
質問者

お礼

ご回答ありがとうございました。

関連するQ&A

  • JavaScriptで日付計算してアラート

    はじめまして。 どうやってJavaScriptでフォームの内容を取得して計算させるかわからなくて相談させてください。 単に今日の日付を取得して+10日後とかの表示はなんとかできたのですがなにぶん初心者ですのでそれ以上のことはさっぱりです^^; やりたいことはフォームで年、月、日を選択して検索ボタンを押すと検索のPHPにフォームの内容を送るというものです。 そこで、指定の日数以降、以前の日付を選ぶとアラートが出るようにしたいのです。(今日より30日以前と30日以降を選ぶとアラートがでる) ご教授のほどよろしくお願いします。 以下今まで作ったソースです。 できればこれに組み込みたいので・・・ <script type="text/javascript"> <!-- function FormCheck(Form) { Error = new Array(); i = 0; // 年の選択チェック if ((Form["yyyy"]) && (Form["yyyy"][0].selected == true)) { Error[i] = "年は必須項目です。"; i++; } // 月の選択チェック if ((Form["mm"]) && (Form["mm"][0].selected == true)) { Error[i] = "月は必須項目です。"; i++; } // 日の選択チェック if ((Form["dd"]) && (Form["dd"][0].selected == true)) { Error[i] = "日は必須項目です。"; i++; } // 未入力があればアラート if (Error.length > 0) { ErrorText = Error.join("\n"); alert ("未入力の項目があるので検索できません。\n\n"+ErrorText); return false; } } // --> </script> <form name="trace" action="kensaku.php" method="GET" onsubmit="return FormCheck(this)"> <TABLE><TR><TD> <select name="yyyy" size="1"> <option value=""></option> <option value="2008">2008</option> <option value="2009">2009</option> </select>年 <select name="mm" size="1"> <option value=""></option> <option value="01">01</option> <option value="02">02</option> <option value="03">03</option> <!-- ~~~~略~~~~~ --> <option value="12">12</option> </select>月 <select name="dd" size="1"> <option value=""></option> <option value="01">01</option> <option value="02">02</option> <option value="03">03</option> <!-- ~~~~略~~~~~ --> <option value="31">31</option> </select>日 </TD></TR> <TR><TD><INPUT TYPE="submit" name="submit" VALUE="検索"></TD></TR> </TABLE>

  • 1ページで2つのフォームをチェックしたいのですが…

    1つのページに同じ項目のフォームを2つ作りました。 そしてそれにチェックを設けたいと思いフォームチェックのスクリプトを入れてみました。 が、しかし、、 上のフォームはチェックが動くのですが、 下のフォームは何を入れてもチェックがエラー検出をして 次のページに進めなくなってしまいます。。 こちらはどのようにしたら両方のチェックが働きつつ 次のページに値を渡せるのでしょうか? 正しい書き方を教えてください。 よろしくお願いします。 <html> <head> <script language="JavaScript"> <!-- // 入力チェック function chkInputForm() { Error = new Array(); i = 0; // お客様の業種入力チェック if (document.forms[0].elements["part"].selectedIndex == 0) { Error[i] = "[ 1・2の選択 ] は必須項目です。"; i++; } // 会社(事務所)のご住所入力チェック if (document.forms[0].elements["pref"].selectedIndex == 0) { Error[i] = "[住まい] は必須項目です。"; i++; } // 未入力があればアラート if (Error.length > 0) { ErrorText = Error.join("\n"); alert ("以下の項目は必須です。\n\n"+ErrorText); return false; } return true; } //--> </script> </head> <body> <form action="inquiry.php" method="post" onsubmit="return chkInputForm()"> <table class="table" summary="お問合せテーブル"> <tbody><tr> <th>1か2</th> <td> <select name="part" style="width: 200px;"> <option value="0">---ご選択下さい---</option> <option value="1">1</option> <option value="2">2</option> </select> </td> </tr> <tr> <th>住まいは</th> <td> <select name="pref" style="width: 200px;"> <option value="0">---ご選択下さい---</option> <option value="1">日本</option> <option value="2">海外</option> </select> </td> </tr> </tbody></table> <input class="iepng" name="button" value="送信" type="submit"> </form> <form action="inquiry.php" method="post" onsubmit="return chkInputForm()"> <table class="table" summary="お問合せテーブル"> <tbody><tr> <th>1か2</th> <td> <select name="part" style="width: 200px;"> <option value="0">---ご選択下さい---</option> <option value="1">1</option> <option value="2">2</option> </select> </td> </tr> <tr> <th>住まいは</th> <td> <select name="pref" style="width: 200px;"> <option value="0">---ご選択下さい---</option> <option value="1">日本</option> <option value="2">海外</option> </select> </td> </tr> </tbody></table> <input class="iepng" name="button" value="送信" type="submit"> </form> </body> </html>

  • Javascriptで必須項目とメールアドレスチェックを同時に行いたいのですが…

    Javascriptで入力フォームの必須項目とメールアドレスのチェックを行いたいため、下記の様に設定したのですが、メールアドレスが入っているか確認後、メールアドレスのチェックを行うにはどのように書けばいいでしょうか?(現在は、Emailは必ず入力して下さい。Emailアドレスをご確認下さい。のalertが同時にでてしまいます。)宜しくお願いします。 <script type="text/javascript"> <!-- function FormCheck(Form) { Error = new Array(); i = 0; // 選択リストのチェック if ((Form["naiyou"]) && (Form["naiyou"][0].selected == true)) { Error[i] = "お問合せ内容を選択して下さい。"; i++; } // 名前の入力チェック if ((Form["name"]) && (Form["name"].value == "")) { Error[i] = "お名前は必ず入力して下さい。"; i++; } // emailの入力チェック if ((Form["email"]) && (Form["email"].value == "")){ Error[i] = "Emailは必ず入力して下さい。"; i++; } if ((Form["email"]) && (!Form["email"].value.match(/^[A-Za-z0-9]+[\w-]+@[\w\.-]+\.\w{2,}$/))){ Error[i] = "Emailアドレスをご確認下さい。"; i++; } // 未入力があればアラート if (Error.length > 0) { ErrorText = Error.join("\n"); alert (ErrorText); return false; } } // --> </script>

  • CGI メールフォームからBCCのアドレスにメールが送信できない(Perl)

    初心者で簡単なメールフォームを作成しております。 宛先となる支店を選択後、メールのTOにその支店のアドレスが入り、メールは受信できます。同時にBCCにも一人のアドレスを入力してメールを送信したいのですが、BCCにはメールが届きません。 以下に抜粋したソースを記述しますので、どなたかご教授願います。 --------------------- HTML 部分 ------------------------------ <form action="./cgi/●●/sendmail.cgi" name="myform" method="POST"> <table> <tr><td>あなたのメールアドレス</td> <td><input type="text" name="email" size="60" maxlength="60"></td> </tr> <tr><td>お問合せ先の支店を選択</td> <td><select name="address"> <option value="" selected>選択してください</option> <option value="aaaaa@domain.jp">A支店</option> <option value="bbbbb@domain.jp">B支店</option> <option value="ccccc@domain.jp">C支店</option> </select> </td> </tr> <tr> <td><input type="submit" name="submit" value="送 信"></td> <td><input type="reset" name="reset" value="キャンセル"></td> </tr> </table> </form> --------------------- cgi 部分 ------------------------------- require '../cgi-lib.pl'; require '../jcode.pl'; $sendmail = '/usr/sbin/sendmail'; $bcc_address = 'bccbcc@gmail.com'; $email = $in{'email'}; $address = $in{'address'}; &jcode'convert(*email,'sjis'); &jcode'convert(*address,'sjis'); $message = <<EOF; Subject: 質問 From: $email Errors-to: $email Reply-To: $email ------------------------------------------------------------- 質問内容 ------------------------------------------------------------- [お客様のメールアドレス] $email EOF open(MAIL,"|$sendmail $address"); print MAIL $message; print MAIL "BCC: $bcc_address\n"; close(MAIL); print <<EOF; Content-Type: text/html <html> <head> <title>送信しました</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> ●お客様のメールアドレス $email<br> </body> </html> EOF

  • CGI メールフォームからBCCのアドレスにメールが送信できない(Perl)

    初心者で簡単なメールフォームを作成しております。 宛先となる支店を選択後、メールのTOにその支店のアドレスが入り、メールは受信できます。同時にBCCにも一人のアドレスを入力してメールを送信したいのですが、BCCにはメールが届きません。 以下に抜粋したソースを記述しますので、どなたかご教授願います。 --------------------- HTML 部分 ------------------------------- <form action="./cgi/sendmail.cgi" name="myform" method="POST"> <table> <tr><td>あなたのメールアドレス</td> <td><input type="text" name="email" size="60" maxlength="60"></td> </tr> <tr><td>お問合せ先の支店を選択</td> <td><select name="address"> <option value="" selected>選択してください</option> <option value="aaaaa@domain.jp">A支店</option> <option value="bbbbb@domain.jp">B支店</option> <option value="ccccc@domain.jp">C支店</option> </select> </td> </tr> <tr> <td><input type="submit" name="submit" value="送 信"></td> <td><input type="reset" name="reset" value="キャンセル"></td> </tr> </table> </form> --------------------- cgi 部分 -------------------------------- require '../cgi-lib.pl'; require '../jcode.pl'; $sendmail = '/usr/sbin/sendmail'; $bcc_address = 'bccbcc@gmail.com'; $email = $in{'email'}; $address = $in{'address'}; &jcode'convert(*email,'sjis'); &jcode'convert(*address,'sjis'); $message = <<EOF; Subject: 質問 From: $email Errors-to: $email Reply-To: $email -------------------------------------------------------------- 質問内容 -------------------------------------------------------------- [お客様のメールアドレス] $email EOF open(MAIL,"|$sendmail $address"); print MAIL $message; print MAIL "BCC: $bcc_address\n"; close(MAIL); print <<EOF; Content-Type: text/html <html> <head> <title>送信しました</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> ●お客様のメールアドレス $email<br> </body> </html> EOF

    • ベストアンサー
    • Perl
  • JavaScriptのSELECTの値について

    JavaScriptについて、質問させてください。 html1からhtml2にSELECTで選択した値を渡すプログラムを作成しています。 下はそのソースです。 <html> <head></head> <body> <form method="POST" action="html2" onSubmit="入力チェック"> <table> <tr> <td>項目A-1</td> <td>項目A-2</td> <td> <select name="selname1"> <option value="0">0</option> <option value="1,11,111">1</option> <option value="2,22,222">2</option> </select> </td> </tr> <tr> <td>項目B-1</td> <td>項目B-2</td> <td> <select name="selname2"> <option value="0">0</option> <option value="3,33,333">3</option> <option value="4,44,444">4</option> </select> </td> </tr> </table> </form> </body> </html> 項目は全部で10ほどあるので、途中省略しています。 SELECTで0以外が選ばれていた場合に、それに関連する項目情報と optionのvalueをhtml2に送信させて、一覧表のように表示させたいと思います。 JavaScriptのDOMやループ文を使うようですが、 私は専門外なので、どのような処理を組めばよいかわかりません。 どなたか、わかる方ご教示願います。

  • アラートチェック_javascript

    javascript初心者です。 15個のテキストボックスに0or1のみ入力されるようにチェックを行いたいです。 ★のところでランタイムエラーが出ます。 <SCRIPT LANGUAGE="javascript"> <!-- var isFristTime = false; function fn_submit(obj) { for(var a=1; a<16; a++){ var flag = "fl1_" + a; ★ if(obj.flag.value.match(/^[0-1\s]$/)){ alert("フラグは0か1のみです。"); break; } } } // --> </script> </head> <body> <form name="form0" action="alert_test.asp" method="POST" OnSubmit="return fn_submit(this);"> <table border="1" bordercolor="#000000" rules="none"> <tr> <% for i=1 to 15 flag = "fl1_"&i %> <td>フラグ<%= i%></td> <td width="50" align="left"> <input type="text" name=<% =flag %> style="IME-MODE: disabled" size="2" maxlength="1" value="0"></td> <tr> <% next %> </tr> </table> <input type="submit" value="チェック"> </form>

  • javascriptによる計算

    テキストボックス「a1~6」の値とテキストボックス「b1~6」に入力された値を足し算してテキストボックス「c1~6」(例…c[i] = a[i] + b[i])を計算するJavaScriptを作成しているのですが、結果がundefinedになってしまい上手くいきません。どうやったら動くのかどうかご教授ください。 以下ソース↓ <script language ="JavaScript"> function plus() { var intResult = 0; for (i=1; i<=6; i++){ intResult[i] = 0; if (!isNaN(document.forms["A"].all["a"+i].value) && !isNaN(document.forms["B"].all["b"+i].value)){ intResult[i] += parseInt(document.forms["A"].all["a"+i].value); intResult[i] += parseInt(document.forms["B"].all["b"+i].value); } <table border = 1> <tr> <td> <table border = 1> <tr> <td> <form name="A"> <input type = "text" size = 5 name = "a1"></input> </td> <td> <input type = "text" size = 5 name = "a2"></input> </td> <td> <input type = "text" size = 5 name = "a3"></input> </td> </tr> <tr> <td> <input type = "text" size = 5 name = "a4"></input> </td> <td> <input type = "text" size = 5 name = "a5"></input> </td> <td> <input type = "text" size = 5 name = "a6"></input> </form> </td> </tr> </table> </td> <td> <table boeder = 1> <tr> <input type = "button" onClick="plus()" value = "+"></input> </tr> </table> </td> <td> <table border = 1> <tr> <td> <form name = "B"> <input type = "text" size = 5 name = "b1"></input> </td> <td> <input type = "text" size = 5 name = "b2"></input> </td> <td> <input type = "text" size = 5 name = "b3"></input> </td> </tr> <tr> <td> <input type = "text" size = 5 name = "b4"></input> </td> <td> <input type = "text" size = 5 name = "b5"></input> </td> <td> <input type = "text" size = 5 name = "b6"></input> </form> </td> </tr> </table> </td> </tr> </table> 答え <form name = "C"> <table border = 1> <tr> <td> <input type = "text" size = 5 name = "c1"></input> </td> <td> <input type = "text" size = 5 name = "c2"></input> </td> <td> <input type = "text" size = 5 name = "c3"></input> </td> </tr> <tr> <td> <input type = "text" size = 5 name = "c4"></input> </td> <td> <input type = "text" size = 5 name = "c5"></input> </td> <td> <input type = "text" size = 5 name = "c6"></input> </td> </tr> </table> </form> </body> document.C.all["c"+i].value = intResult[i]; } } </script>

  • フォーム内の値のチェックについて

    このようなフォーム(aspでセレクトボックスの数は可変になります。)にてSubmit時に 同じ値が選ばれていたらalertを出すJavaScriptを作りたいのですが、 どのようなものを作ればよろしいでしょうか? <FORM name="TestForm" action="" method="POST" target=""> <TABLE border="1" cellspacing="0" cellpadding="0" width="100%"> <TR> <td>1位</td> <TD> <select name="Select1"> <OPTION value="449">[選択なし]</OPTION> <OPTION value="465">あ</OPTION> <OPTION value="466">い</OPTION> <OPTION value="467">う</OPTION> </select> <td>2位</td> <TD > <select name="Select1"> <OPTION value="449">[選択なし]</OPTION> <OPTION value="465">あ</OPTION> <OPTION value="466">い</OPTION> <OPTION value="467">う</OPTION> </select> <td>3位</td> <TD> <select name="Select1"> <OPTION value="449">[選択なし]</OPTION> <OPTION value="465">あ</OPTION> <OPTION value="466">い</OPTION> <OPTION value="467">う</OPTION> </select> </TR> </TABLE> <TR><TD> <INPUT type="submit" value=登録 name=B1 onClick=""> </TD></TR> </FORM>

  • チェックボックスとの連動

    白黒とカラーの項目を連動させています。例えば白黒のチェックをはずしてカラーにチェックを入れるとすでに白黒で選択してた場合、金額が合計に加算されてしまいます。チェックをはずした時点で選択項目の金額をリセットさせたいのですが解決方法が見つかりません。Javascript勉強中で正直よくわかっていません。下記スクリプトもあっちこっち調べながら組み合わせたものです。解決策をいただけると助かります。よろしくお願い致します。 <script language="javascript"> <!-- n_table1 = new Array(0,100,200); n_table2 = new Array(0,300,400); function keisan(obj) { var outStr=""; var total=0; total = total + n_table1[document.form1.koumoku1.selectedIndex] * document.form1.kazu1.value; total = total + n_table2[document.form1.koumoku2.selectedIndex] * document.form1.kazu1.value; outStr = total; document.form1.goukei.value=eval(outStr); } function ctrl_check01(check02_checked) { document.getElementsByName("idcheck2")[0].disabled = check02_checked; document.getElementsByName("koumoku2")[0].disabled = check02_checked; } function ctrl_check03(check04_checked) { document.getElementsByName("idcheck")[0].disabled = check04_checked; document.getElementsByName("koumoku1")[0].disabled = check04_checked; } // --> </script> <form name="form1" METHOD="POST"> <table cellspacing="0" cellpadding="8" border="1" bordercolor="#666"> <tr> <td>白黒</td> <td><input type=checkbox name="idcheck" id="idcheck" onClick="ctrl_check01(this.checked);"> 白黒 <select name="koumoku1"> <option>選択 <option>--------------A(100) <option>--------------B(200) </select> </tr> <tr> <td>カラー</td> <td><input type=checkbox name="idcheck2" id="idcheck2" onClick="ctrl_check03(this.checked);"> カラー <select name="koumoku2"> <option>選択 <option>--------------A(300) <option>--------------B(400) </select></td> </tr> <tr> <td colspan="2"></td> </tr> <tr> <td>総枚数</td> <td><input type="text" name="kazu1" size="8" maxlength="12" value="0"> 枚</td> </tr> <tr> <td colspan="2"></td> </tr> <tr> <td>合計</td> <td><input type="text" name="goukei" size="8" maxlength="12" value="0"> 円</td> </tr> </table> <input type="button" value="計算する" onClick="keisan(this.form)"> </form>

専門家に質問してみよう