kuruton_ternのブログ

プログラミングのアウトプットブログ。

jQueryの練習【keypress/keyup/addClass/removeClass/this】

今回jQueryでやってみた練習はこちらです。

① テキストを入力するためにキーを押すと、フォームの入力部分の背景色が変わる。
 + 赤色で「keypressすると文字色が変わります」という文が出現。

②テキストを入力し終わってキーを離すと、フォームの入力部分の背景色が戻る。
 + 青色で「keyupすると文字色が変わります」の文が出現。


この2つの動作が加わるよう、html/css/jQueryで書いてみました。


実際に作ってみたものがこちら。

keyup/keypress
keyup/keypress.gif







jQueryの良い復習になりました。

【作り方】

html(つけたファイル名:test.html)

まずはhtmlでテキスト入力フォームを作ります。
作ったあとに気づいたのですが、「送信ボタン」を使いません。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>javascriptで練習</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <form method="post" action="" class="formArea">
    <div class="formItem">
      テキストを入力してください。
      <input type="text" name="" class="inputText js-key-text" autocomplete="off">
      <!--  フォームに入力があったらここにも変化が起こる  -->
      <span class="msgArea js-set-msg-text"></span>
    </div>

    <input type="submit" value="送信" class="btn">
  </form>

  <!--jQuery-->
  <script 
      src="https://code.jquery.com/jquery-3.4.1.js" 
      integrity="sha256-WpOohJOqMqqyKL9FccASB9O0KwACQJpFTUBLTYOVvVU="
      crossorigin="anonymous"></script>
  <script src="test.js"></script> </body>
</html>



jQuery(つけたファイル名:test.js)

jQueryは以下のように書いてみました。
細かくコメントも書いたので、学習に役立つと思います。

$(function(){
   //$('.js-key-text')に対して、【keypress(キーを押したとき)】をしたとき、function(e)以下を実行
  $('.js-key-text').on('keypress',function(e){

    // まずは下の「keyup」イベントで追加されたクラス名「unchange-colorBlue」を取りのぞく。
    $('.js-set-msg-text').removeClass('change-colorBlue');

    // クラス名「change-color」を追加する。
    $('.js-set-msg-text').addClass('change-colorRed');

    // テキスト文を表示させる。
    $('.js-set-msg-text').text('keypressすると文字色が変わります');

    // $(this) = $('.js-key-text')にクラス名「change-background」を追加。
    $(this).addClass('change-background');
  });

   //$('.js-key-text')に対して、【keyup(キーを離したとき)】をしたとき、function(e)以下を実行
  $('.js-key-text').on('keyup',function(e){

    // まずは上の「keypress」で追加されたクラス名「unchange-colorRed」を取りのぞく。
    $('.js-set-msg-text').removeClass('change-colorRed');

    // クラス名「change-colorBlue」を追加する。
    $('.js-set-msg-text').addClass('change-colorBlue');

    // テキスト文を表示させる。
    $('.js-set-msg-text').text('keyupすると文字色が変わります');

    // $(this) = $('.js-key-text')にクラス名「change-background」が追加されているから、それを取り除く。
    $(this).removeClass('change-background');
  });
});
使ったもの、勉強になったこと

【イベント】
keypress: キーを押し込んだとき
keyup: キーを離したとき

【メソッド】
addClass: クラスを追加する
removeClass: クラスを取り除く

【その他】
$(this): 自分自身を表す。
この$(this)は、「$('.js-key-text')」を表しています。

thisには「’’」(シングルクォーテーション)がいらないのが要注意!(自分が間違えた)


CSS(つけたファイル名:style.css

CSSはhtmlが見やすいようにスタイルを当てて、追加した文は以下のものです。

.change-colorRed{
  color: #ff1493;
}
.change-colorBlue{
  color: #32aaaa;
}
.inputText.change-background{
  background: #f0f222;
}

CSSに追加したこの3つのクラスを、jQueryでhtmlに追加したり、取り除いたりしています。




初歩中の初歩だと思いますが、自分で作れたのが嬉しい!
javascript/jQueryの練習として
「クラスをつけたり外したりして文字色を変える」のが初学者にはおすすめ
とどこで読んだか忘れてしまいましたが、そんな話を聞いたことがあります。

javascript/jQueryで文字色を直接変えるより、クラスの追加・削除だけした方が読み込みスピードが速くなるし
クラスの追加・削除を業務上使う機会が多いから。という理由だったと思います。


誰かの参考になれば幸いです。