送信フォームの必須項目が入力済みかチェック

送信フォームの入力必須項目が入力されているかチェックし、入力必須項目に未入力があった場合、「必須項目は全て入力して下さい。」というアラートを出現させ、送信せず、未入力の必須項目の項目名の下に 【○○を入力して下さい】と表示させるサンプル。

実装例

名前(必須)

コメント(必須)

実装例の動作について

  1. 実装例の送信フォームの、名前とコメントの欄に何も入力せず、送信ボタンを押すと、
    • 「必須項目は全て入力して下さい。」というアラートが出現。
    • 「名前(必須)」の下に、【名前を入力して下さい】を表示。
    • 「コメント(必須)」の下に、【コメントを入力して下さい】を表示。
  2. 名前の欄に何か入力し、送信ボタンを押すと、
    • 「必須項目は全て入力して下さい。」というアラートが出現。
    • 「名前(必須)」の下の、【名前を入力して下さい】が消える。
  3. コメントの欄にも何か入力し、送信ボタンを押すと、
    • アラートは出現せず、送信完了。

(注意)サンプルのため、実際には送信しません。

ソースコード

JavaScript

<script type="text/javascript">
<!--
function formCheck(){
    var flag = 0;
    if( document . Form1 . InputText1 . value == "" ){
        flag = 1;
        document . getElementById( 'notice-input-text-1' ) . style . display = "block";
    }else{
        document . getElementById( 'notice-input-text-1' ) . style . display = "none";
    }
    if( document . Form1 . Textarea1 . value == "" ){
        flag = 1;
        document . getElementById( 'notice-textarea-1' ) . style . display = "block";
    }else{
        document . getElementById( 'notice-textarea-1' ) . style . display = "none";
    }
    if( flag ){
        window . alert( '必須項目は全て入力して下さい。' );
        return false;
    }else{
        return true;
    }
}
// -->
</script>

HTML

<form name="Form1" method="post" action="#" onsubmit="return formCheck()">
<p>名前(必須)</p>
<p id="notice-input-text-1" style="display: none; color: red;"> 【名前を入力して下さい】</p>
<p><input type="text" name="InputText1"></p>
<p>コメント(必須)</p>
<p id="notice-textarea-1" style="display: none; color: red;"> 【コメントを入力して下さい】</p>
<p><textarea name="Textarea1" rows="5" cols="40"></textarea></p>
<p><input type="submit" value="送信"></p>
</form>

解説

JavaScript

<script type="text/javascript">
<!--
function formCheck(){
    var flag = 0;

    // 入力必須項目が入力されているかチェック
    if( document . Form1 . InputText1 . value == "" ){ // 名前が未入力の場合
        flag = 1;
        document . getElementById( 'notice-input-text-1' ) . style . display = "block"; // 【名前を入力して下さい】を表示
    }else{ // 名前が入力済みの場合
        document . getElementById( 'notice-input-text-1' ) . style . display = "none"; // 【名前を入力して下さい】を非表示
    }
    if( document . Form1 . Textarea1 . value == "" ){ // コメントが未入力の場合
        flag = 1;
        document . getElementById( 'notice-textarea-1' ) . style . display = "block"; // 【コメントを入力して下さい】を表示
    }else{ // コメントが入力済みの場合
        document . getElementById( 'notice-textarea-1' ) . style . display = "none"; // 【コメントを入力して下さい】を非表示
    }

    if( flag ){ // 入力必須項目に未入力があった場合
        window . alert( '必須項目は全て入力して下さい。' ); // アラートを表示
        return false; // 送信中止
    }else{ // 入力必須項目が全て入力済みだった場合
        return true; // 送信実行
    }

}
// -->
</script>

HTML

onsubmit=""

<form name="Form1" method="post" action="#" onsubmit="return formCheck()">

form要素のイベント属性である onsubmit="" で、フォーム内容送信時に、JavaScript の formCheck() を呼び出し、return で、戻り値を取得。戻り値が false の場合、送信を中止する。戻り値が true の場合、送信を実行する。

display: none;

<p id="notice-input-text-1" style="display: none; color: red;"> 【名前を入力して下さい】</p>
<p id="notice-textarea-1" style="display: none; color: red;"> 【コメントを入力して下さい】</p>

HTMLのフォーム要素内のスタイルシートの display プロパティの値に none を指定し、非表示にした上の二つを、入力必須項目に未入力があった場合、JavaScript で、display プロパティの値を block に変更し、表示させる。

スポンサード リンク

カテゴリー: JavaScript, フォーム, 逆引き パーマリンク