icon
icon

JavaScriptでフォーム要素にdisabledを設定・解除する方法を現役エンジニアが解説【初心者向け】

初心者向けにJavaScriptでフォーム要素にdisabledを設定・解除する方法について現役エンジニアが解説しています。disable属性を設定すると値の入力や送信ができなくなります。JavaScriptで設定・解除するには要素を取得して値を設定しましょう。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

JavaScriptでフォーム要素にdisabledを設定・解除する方法について、テックアカデミーのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

目次

そもそもJavaScriptについてよく分からないという方は、JavaScriptとは何なのかについて解説した記事を読むとさらに理解が深まります。

 

田島悠介

今回は、JavaScriptに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

JavaScriptでフォーム要素にdisabledを設定・解除する方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

disabledとは

disabledは「無効」を示すHTMLの属性です。

disabled属性は、「フォーム要素」と呼ばれるHTML要素に対して指定できます。

 

フォーム要素の代表的な例は、以下の通りです。

input / select / textarea / button

どの要素に対しても、disabled属性をあてると「無効」になるような挙動をします。

 

例えば、以下のように、何かの操作ができる要素に対し、操作をできなくするために使います。

  • input要素にdisabled属性を指定すると、そのinput要素に入力ができなくなる
  • button要素にdisabled属性を指定すると、そのbutton要素を押せなくなる

これは、ある条件を満たさないと入力できない・ボタンを押せない、といった仕様を実現するために便利な機能です。

また、disabledを指定したフォーム要素の値は、フォーム送信時に送信されない特徴もあります。

 

disabled指定をした要素の見た目

CSSでスタイルを変えていない状態では、無効になった要素はグレーがかった色になり、入力できないことを伝えます。

 

HTMLでdisabled属性を指定する

disabled属性は、フォーム要素に以下の記述を加えることで指定できます。

//input要素の入力を不可にする
<input type="text" name="name" placeholder="入力できません" disabled>

//ボタンを押せなくする
<button type="button" disabled>押せないボタン</button>

 

JavaScriptでdisabled属性を指定 / 解除する

JavaScriptでもdisabled属性を指定できます。

これは、ユーザーの操作に応じて入力可能、不可能を切り替える際などに有用です。

 

コードは以下のような流れになります。

//HTML
<input type="text" id="input-message">

//Javascript
const input = document.getElementById('input-message');
input.disabled = true;

ここではまずinput要素のidを用いて要素を取得し、inputという変数に代入しています。

あとはinputのdisabledプロパティをtrueに設定するだけで、HTML側で要素がdisabledになります。

 

逆に解除したい(有効な状態にしたい)場合は、このdisabledプロパティをfalseに設定します。

input.disabled = false;

 

disabledの基本に関する説明は以上です。

次は実践的なコードを書いてみましょう!

 

実際に書いてみよう

今回は「ユーザーが5文字以上入力したらボタンを押せるようにする」という機能を実装してみましょう。

これはWeb用語では「バリデーション」と呼ばれ、ユーザーが入力した値に応じて送信を可能にしたり、不可能にする機能です。

身近なところでは、会員登録時に「パスワードが短すぎます」とメッセージを出されるのが一例です。

 

完成形のコードは以下の通りです。

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <title>disabled sample</title>
</head>
<body>
  <form id="form" action="#">
    <input type="text" id="input-text" placeholder="5文字以上入力してください">
    <button type="submit" id="button" disabled>送信</button>
  </form>
  <script>
    const inputText = document.getElementById('input-text');
    const button = document.getElementById('button');
    inputText.addEventListener('keyup', (e) => {
      if (5 <= e.target.value.length) {
        //入力された文字が5文字以上なら実行される
        button.disabled = false;
      }
    })
  </script>
</body>
</html>

本記事で触れていない文法がいくつか登場していますが、今回は太字の部分に特に注目してみましょう。

 

まずHTML側ですが、「5文字以上で有効」なので、最初にdisabled属性を指定して無効にしておきます。

<button type="submit" id="button" disabled>送信</button>

 

次にJavaScript側で、「5文字以上入力されたらボタン要素のdisabledを解除」コードを書きます。

//何らかの文字が入力されたら実行
inputText.addEventListener('keyup', (e) => {
  //入力された文字が5文字以上なら、という条件文
  if (5 <= e.target.value.length) {
    button.disabled = false;
  }
})

本記事ではdisabledの部分以外の文法については解説を省略しますが、より深く学習したい方は「addEventListener」「if文」について、リンク先の記事を読んでみてくださいね。

今回は以上です。

 

[PR] フロントエンドで副業する学習方法を動画で公開中

執筆してくれたメンター

高田悠(たかだゆう)

JavaScriptを用いた実装など、フロントエンド領域の開発が得意。

なかでもWeb上での3D表現に興味があり、これまでにWebAR(AR=拡張現実)の実装案件を複数経験。

ワークライフバランスを重視し、趣味の音楽活動や釣りを楽しみつつフリーランス生活を送っている。

田島悠介

JavaScriptでフォーム要素にdisabledを設定・解除する方法はよくわかったかい?

大石ゆかり

はい、input要素をうまく使うことが大事なことがわかりました!

田島悠介

ゆかりちゃん、これからも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

JavaScriptを学習中の方へ

これで解説は終了です、お疲れさまでした。

  • つまずかず「効率的に」学びたい
  • 副業や転職後の「現場で使える」知識やスキルを身につけたい

プログラミングを学習していて、このように思ったことはありませんか?

テックアカデミーのフロントエンドコースでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。

合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、JavaScript・jQueryを使ったWebサービス開発を学べます。

まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。

時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!