【JavaScript入門】フォームの入力制御!disabledで入力不可にしよう

こんにちは! ライターのナナミです。

WEBサイトでお問い合わせフォームを作る時、場合によっては入力しなくてもいい項目があったりしますよね。

個人事業主にチェックが入っていたら、会社名や部署は入力しなくていい
製品の問い合わせではないので、製品の型番は入力しなくていい

とか、そんな感じのやつです。でもどうやったら入力しなくてもいい状態にできるんだろう…という方必見! お問い合わせフォームの項目を入力不可にする、disabledについて解説していきます。

今回の記事は、下記の流れで進めていきますね。

  • 【基礎】disabledとは何か
  • 【基礎】disabledを使ってみよう
  • 【応用】disabledを解除しよう
  • 【応用】コピペで使える入力制御のソース

お問い合わせフォームの入力制御を覚えて、よりユーザーが使いやすいフォームを作れるようになっちゃいましょう!

目次

disabledとは?

disabledは「使用禁止」という意味の単語ですね。
コード上での意味も同じく、使用禁止状態を付与する属性です。

disabled

これをHTMLに付与すると、その項目を使用禁止、つまり入力不可にできます。そしてJavaScriptでは、disabled属性をコントロールすることができるのです。

disabled2

クリックしたらdisabled属性をつける、もう一度クリックしたらdisabled属性を外す、ということもできちゃうわけですね。

disabledを使ってみよう

では、どんな使い方をするのか見ていきましょう。実際に入力不可項目を入れたフォームを作成しながら解説していくので、ぜひ実行結果で確かめながら読み進めてみてくださいね。

フォームを用意しよう

まずは元になるフォームがないと話になりませんね。今回はこんな感じの、スタンダードなフォームを用意してみました。

See the Pen form1 by 河野七海 (@kouno73) on CodePen.

そもそもフォームの作り方がよくわからないよ…

という方は、リファレンスなどを参照してみてください。
http://www.htmq.com/html/form.shtml

入力不可にする項目を取得しよう

次に、どの項目を入力不可にするのかを取得していきます。今回は「会社名」の項目を入力不可にしていきましょう。

See the Pen form2 by 河野七海 (@kouno73) on CodePen.

変数triggerに、idで会社名の項目を定義しました。これでtriggerの中に、入力不可にする項目の情報が入りましたね。

変数の定義ってなんだっけ…

という方は、下記の記事でおさらいしてみましょう!

入力不可にするコードを書こう

ここでdisabledの出番です! 先ほど定義した変数の後ろに、.disabled=trueと入れましょう。

See the Pen form3 by 河野七海 (@kouno73) on CodePen.

「会社名」が入力できない状態になりましたね。

全体の流れをおさらいすると、下記のような感じです。

  • HTMLでフォームを用意
  • 入力不可にしたい要素を変数に定義
  • 定義した変数に.disabled=trueをつける

これでユーザーが不要な情報を入力することもなくなりますね!

disabledを解除しよう

そもそも、絶対入力する必要がないのであれば、元から項目に入れなければOKですよね。わざわざ入力不可にするという場面は、何かの条件では入力して欲しい場面でしょう。

入力不可にしたのはいいけど、「企業」にチェックが入っていたら解除したい…

という時は、下記のような流れで解除していきましょう!

解除する条件を決めよう

まず、解除の条件が何かを考えてみましょう。

今回は、「企業」にチェックが入っていたら、「会社名」を入力してほしいという例で進めていきますね。どんな条件の時に解除したいかが決まったら、その条件のきっかけになる項目を取得していきます。

See the Pen form4 by 河野七海 (@kouno73) on CodePen.

変数triggerに、「企業」の項目を定義しました。

解除する条件を取得しよう

次に、解除する条件自体を設定していきます。今回はチェックしたら、つまりクリックしたらなので、クリックイベントを取得します。さらに精度を上げるために、この項目をクリックした時に、チェックがついていたらという条件も入れておくといいでしょう。

See the Pen form5 by 河野七海 (@kouno73) on CodePen.

これで準備はバッチリです。

解除するコードを書こう

さあ、入力不可を解除していきましょう! 先ほどの条件をクリアしたら、triggerに.disabled=falseが付くようにします。

See the Pen form6 by 河野七海 (@kouno73) on CodePen.

想定通りの動きができました。実行結果でぜひ試してみてください。

おさらいすると、下記のような流れでの実装となりました。

  • 入力不可を解除するきっかけになる要素を取得
  • 入力不可を解除する条件を用意する
  • 入力不可を解除したい要素に.disabled=falseをつける


これでより実用的な形になりましたね。

コピペで使える完成形

今回解説したコードを、さらに実用的に調整したものが下記となります。

See the Pen form7 by 河野七海 (@kouno73) on CodePen.

仕様は下記のような感じです。

  • 【「会社名」が入力不可になる条件】
  • ページの読み込み時
  • 「個人事業主」をクリックした時にチェックがついていたら【「会社名」が入力可能になる条件】
  • 「企業」をクリックした時にチェックがついていたら

このままコピペしてよし、ちょっと調整してもよし。自由に使っちゃってください!

まとめ

いかがでしたか?

いろんな関数を使う必要があるので、初めてやる人は難しく感じていたのではないでしょうか。でも、こうやってちょっとずつ紐解きながらやってみると、そんなに難しいことはありません。ぜひ活用して、ユーザーが使いやすいWEBサイトを作ってみてくださいね!

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

目次