送信フォームの入力文字数をチェック

送信フォームの入力文字数をチェックし、指定した文字数に対し、不足していたり、超過していたりした場合、「入力内容に不備があります。」というアラートを出現させ、送信せず、不足の場合は、「○○文字不足しています。」と表示させ、超過の場合は、「○○文字オーバーしています。」と表示させるサンプル。

実装例

コメント(6文字以上20文字以内)

実装例の動作について

何も入力せずに、送信ボタンを押すと、

  • 「入力内容に不備があります。」というアラートが出現。
  • 「コメント(6文字以上20文字以内)」の下に、「6文字不足しています。」と表示。

2文字入力し、送信ボタンを押すと、

  • 「入力内容に不備があります。」というアラートが出現。
  • 「コメント(6文字以上20文字以内)」の下に、「4文字不足しています。」と表示。

22文字入力し、送信ボタンを押すと、

  • 「入力内容に不備があります。」というアラートが出現。
  • 「コメント(6文字以上20文字以内)」の下に、「2文字オーバーしています。」と表示。

6文字以上20文字以内の文字を入力し、送信ボタンを押すと、

  • アラートは出現せず、送信完了。

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

ソースコード

JavaScript

<script type="text/javascript">
<!--
function formCheck(){
    var flag = 0;
    var input_text_1_length = document . Form1 . InputText1 . value . length;
    if ( input_text_1_length < 6 ){
        flag = 1;
        document . getElementById( 'notice-input-text-1' ) . innerHTML = 6 - input_text_1_length + "文字不足しています。";
        document . getElementById( 'notice-input-text-1' ) . style . display = "block";
    }
    if ( input_text_1_length  > 20 ){
        flag = 1;
        document . getElementById( 'notice-input-text-1' ) . innerHTML = input_text_1_length - 20 + "文字オーバーしています。";
        document . getElementById( 'notice-input-text-1' ) . style . display = "block";
    }
    if( flag ){
        window . alert( '入力内容に不備があります。' );
        return false;
    }else{
        document . getElementById( 'notice-input-text-1' ) . style . display = "none";
        return true;
    }
}
// -->
</script>

HTML

<form name="Form1" method="post" action="#" onsubmit="return formCheck()">
<p>コメント(6文字以上20文字以内)</p>
<p id="notice-input-text-1" style="display: none; color: red;"></p>
<p><input type="text" name="InputText1" size="25"> <input type="submit" value="送信"></p>
</form>

解説

JavaScript

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

    // 入力文字数をチェック
    var input_text_1_length = document . Form1 . InputText1 . value . length; // 入力文字数を、変数に格納
    if ( input_text_1_length < 6 ){ // 入力文字数が不足している場合
        flag = 1;
        document . getElementById( 'notice-input-text-1' ) . innerHTML = 6 - input_text_1_length + "文字不足しています。";
        document . getElementById( 'notice-input-text-1' ) . style . display = "block";
    }
    if ( input_text_1_length  > 20 ){ // 入力文字数が超過している場合
        flag = 1;
        document . getElementById( 'notice-input-text-1' ) . innerHTML = input_text_1_length - 20 + "文字オーバーしています。";
        document . getElementById( 'notice-input-text-1' ) . style . display = "block";
    }

    if( flag ){ // 入力文字数が、不足もしくは超過している場合
        window . alert( '入力内容に不備があります。' ); // アラートを表示
        return false; // 送信中止
    }else{ // 入力文字数が、不足もしくは超過していない場合
        document . getElementById( 'notice-input-text-1' ) . style . display = "none";
        return true; // 送信実行
    }

}
// -->
</script>

HTML

onsubmit=""

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

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

不足文字数、超過文字数を表示

<p id="notice-input-text-1" style="display: none; color: red;"></p>

この部分を、JavaScript で、コントロールし、不足の場合は、「○○文字不足しています。」と表示させ、超過の場合は、「○○文字オーバーしています。」と表示。

スポンサード リンク

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