LoginSignup
2
1

More than 3 years have passed since last update.

[jQuery]入力フォームのバリデーション

Posted at

概要

チャットなどでメッセージを送る時に、フォームが空の状態で相手にチャットが送れないようにバリデーションを実装しました。
slackみたいに、初期状態ではボタンが押せない状態でメッセージが入力されるとボタンが押せるようになります。
送信後は、フォームが空になるのでボタンが再び押せなくなります。

チャット送信フォーム

index.html
 <div class="chat-form">
   <textarea id="message-input" placeholder="メッセージ入力"></textarea>
   <button id="sending-button" disabled onclick="$sendMessage">
      送信
   </button>
</div>

jQueryの処理

chat.js

//バリデーション
let sending = false;

$('#message-input').keyup(function () {
  const chatMessage = $(this).val().replace(/^\s+/, "");
  if (chatMessage.length > 0) {
    sending = true;
  $('#sending-button').prop('disabled', false).css({
    background: '#0a65cc',
   });
  } else {
   $('#sending-button').prop('disabled', true).css({
     background: '#ccc',
    });
  }
});


//メッセージ送信のajaxの処理
if (sending) {
  $.ajax({
  //ajaxの設定
  }).done(function () {
   sending = false;
   $('#sending-button').prop('disabled', true).css({
        background: '#ccc'
    });
  });
};

解説


$('#message-input').keyup(function () {

keyup()イベントでフォーム入力の変更を検知する


const chatMessage = $(this).val().replace(/^\s+/, "");

フォームに入力した値をval()で取得して、先頭の空白は空文字に変換している

if (chatMessage.length > 0) {
//文字入力がないと文字数が0のため、1文字以上入力を条件にする
    sending = true;
//ボタンが押せる状態となる
  $('#sending-button').prop('disabled', false).css('background', '#0a65cc');
  } else {
//文字入力がないとボタンを押せなくさせる
   $('#sending-button').prop('disabled', true).css('background', '#ccc');
  }
//sendingがtrueの時にメッセージを送信する処理を実行する
if (sending) {
  $.ajax({
  //ajaxの設定
  }).done(function () {
// 送信後は処理されないようにfalseを設定
   sending = false;
// ボタンの色を変更し、再び押せないようにする
   $('#sending-button').prop('disabled', true).css({
        background: '#ccc'
    });
  });
};

初期状態の送信フォーム
スクリーンショット 2020-10-05 17.08.44.png

空白で送られないように半角、全角スペース、改行のみだとボタンが押せないようにバリデーションされている状態

スクリーンショット 2020-10-05 17.09.01.png

メッセージが入力されると、ボタンが押せるようになった状態
スクリーンショット 2020-10-05 17.09.12.png

終わりに

jQueryのバリデーションで検索するとプラグインなどで実装してることが多いので、また使うかもしれないのでメモとして残しています。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1