javascriptのフォームの質問をいくつかさせてください。

http://1811way.com/work008/index03.html
1.「申込(チェックをお入れください)※」
(新入、相談に5つのチェックボックスがあります)
Q:このうちの1つもチェックがついていない時、
alert(どれか1つは選んでください)を出す。

2.「申請しますか?※」のうち、申請する、申請しない
のどちらかにチェックを入れるのを必須とする。
さらに
「申請する」にチェックが入った場合、
会員番号を入力必須とする。


以上1,2を
function checkForm()
に記述してください。

3.入力が終わったら、「同意して送信」ボタンをクリックすると
check.php に飛ぶ。


注1:フォームは
http://1811way.com/work008/index03.html

ソースは
http://1811way.com/work008/index03.txt

注2:check.php はザックシ書いてあるだけです。
このフォームが終わったら考えますが、index03.htmlと同じフォルダーに
アップしてあります。
一応ソースは
http://1811way.com/work008/check.txt
です。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2014/03/22 09:25:39
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。
id:kohhi

質問者から

kohhi2014/03/18 04:44:31

注3:

2012.6に似たような質問をしております。

http://q.hatena.ne.jp/1340848961

不都合・追加の部分を書いていただけると助かります。

よろしくお願いします。

ベストアンサー

id:a-kuma3 No.1

回答回数4974ベストアンサー獲得回数2154

ポイント500pt

こんな感じになると思います。
f.submit() の前に、コードを足してます。

function checkForm() {

    var f = window.document.form1;

    ...

//ここから
    //申込
    {
        var courses = document.getElementsByName("course[]");
        var checked = 0;
        for (var i = 0 ; i < courses.length ; ++i) {
            if (courses[i].checked) {
                checked += 1;
            }
        }
        if (checked == 0) {
            alert("コースのどれかを、最低ひとつは選んでください");    // ちょっと文言を変えてます
            return false;
        }
    }

    // 申請する/しない
    {
        var fps = document.getElementsByName("fp");
        if (! fps[0].checked && ! fps[1].checked) {
            alert("「申請する/しない」のどちらかを選んでください");
            return false;
        }
        if (fps[0].checked) {
            if (f.kaiin_id.value == "") {
                alert("会員番号を入力してください");
                return false;
            }
            if (! /^[A-z0-9]+$/.test(f.kaiin_id.value)) {
                alert("会員番号は、半角英数字で入力してください");
                return false;
            }
        }
    }
//ここまで

    f.submit();
}

会員番号は半角英数字のみ、とあるので、そのチェックも足してみました。
ime-mode は disabled になってますが、コピペで全角を貼り付けられるので。

id:kohhi

お返事いただきありがとうございました。
出来ました。

2014/03/22 09:25:25

その他の回答0件)

id:a-kuma3 No.1

回答回数4974ベストアンサー獲得回数2154ここでベストアンサー

ポイント500pt

こんな感じになると思います。
f.submit() の前に、コードを足してます。

function checkForm() {

    var f = window.document.form1;

    ...

//ここから
    //申込
    {
        var courses = document.getElementsByName("course[]");
        var checked = 0;
        for (var i = 0 ; i < courses.length ; ++i) {
            if (courses[i].checked) {
                checked += 1;
            }
        }
        if (checked == 0) {
            alert("コースのどれかを、最低ひとつは選んでください");    // ちょっと文言を変えてます
            return false;
        }
    }

    // 申請する/しない
    {
        var fps = document.getElementsByName("fp");
        if (! fps[0].checked && ! fps[1].checked) {
            alert("「申請する/しない」のどちらかを選んでください");
            return false;
        }
        if (fps[0].checked) {
            if (f.kaiin_id.value == "") {
                alert("会員番号を入力してください");
                return false;
            }
            if (! /^[A-z0-9]+$/.test(f.kaiin_id.value)) {
                alert("会員番号は、半角英数字で入力してください");
                return false;
            }
        }
    }
//ここまで

    f.submit();
}

会員番号は半角英数字のみ、とあるので、そのチェックも足してみました。
ime-mode は disabled になってますが、コピペで全角を貼り付けられるので。

id:kohhi

お返事いただきありがとうございました。
出来ました。

2014/03/22 09:25:25
  • id:u_7cc
    alertを連続させるとダイアログがもう出ないようにする設定が出てしまうので、別の方法を考えたほうが良いです。
    http://www.softel.co.jp/blogs/tech/archives/3287

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません