SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

日本仕様のJavaScript入力ライブラリ「InputManJS」の活用(AD)

入力フォームの面倒なバリデーションチェックを手早く実装!「InputManJS」の検証機能の活用術

  • X ポスト
  • このエントリーをはてなブックマークに追加

 メシウス株式会社が提供する「InputManJS」は、リッチテキスト、テキスト、マスク、日付時刻、数値、コンボなど、用途別に最適化された日本仕様の入力用JavaScriptコントロールのセットです。本記事では、InputManJSの検証コントロールを含めた基本的な使い方や、V5Jの新機能を中心とした事例を紹介します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

必要な環境

 本記事のサンプルコードは、以下の環境で動作を確認しています。

  • macOS Sonoma(14.7)
    • InputManJS(5.0)
    • Visual Studio Code 1.96.4(Live Server 5.7.9)
    • Google Chrome 132.0

対象読者

  • 入力フォームに高度なコントロールを実装したい方
  • 入力フォームの検証をより高度に実施したい方
  • InputManJSの最新機能を知りたい方

開発環境と事前準備

 最初に、検証機能の概要を理解し、開発環境と必要なファイルを準備しておきます。

検証機能の概要

 InputManJSは、リッチテキスト、テキスト、マスク、日付時刻、数値、コンボなど、用途別に最適化された日本仕様の入力用JavaScriptコントロールのセットです。高度にカスタマイズされたコントロールを使うことで、リッチな入力フォームを簡単に構築できます。また、高機能な検証コントロールが用意されており、HTML標準の検証機能をはるかに超えた高度な検証を、サーバサイドの実装なしに実現できます。

 検証規則には、以下の表1に挙げるものがあります(以下表内の*はV5Jで使えるようになった機能)。

表1:検証コントロールの規則
規則 概要
入力必須 コントロールへの入力を必須とする
入力範囲 数値や日付の範囲を制限する
入力文字数* コントロールに入力できる文字数を制限する
他のコントロールとの照合* 他のコントロールと同値かチェックする
外部検証結果の指定* 検証コントロール外部の検証コードの評価に委ねる
カスタム検証規則 検証規則をユーザ定義の関数によって定義する

 本記事では、これらの新機能を中心に、InputManJSの検証機能を紹介していきます。

開発環境

 開発環境としては、VSCode(Visual Studio Code)をインストールしておきます。そのあと、VSCodeにHTTPサーバを提供する拡張機能Live Serverをインストールします。本記事のサンプルではHTTPサーバは必須ではありませんが、ホットリロードなどが利用できるので、インストールしておくと便利です。

サンプルフォームの準備

 本記事のサンプルは、HTML、CSS、JavaScriptのファイルからなるシンプルな構成なので、適当な作業フォルダを作成してそこにファイルを配置していきます。まずは、index.htmlファイルを、以下のリストの内容で作業フォルダに作成します。InputManJSを利用するにはいくつかの方法がありますが、本記事ではCDN(Content Delivery Network)から直接取り込む簡便な方法を利用します。

[リスト]index.html
<!DOCTYPE html> 
<html lang="ja"> 
<head> 
  <meta charset="UTF-8"> 
  <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
  <link rel="stylesheet" href="https://cdn.mescius.com/inputmanjs/hosted/css/gc.inputman-js.css" />    (1) 
  <script src="https://cdn.mescius.com/inputmanjs/hosted/scripts/gc.inputman-js.ja.js"></script>    (1) 
  <link rel="stylesheet" href="https://cdn.mescius.com/inputmanjs/hosted/richtexteditor/css/gc.inputman.richtexteditor.css" />    (2) 
  <script src="https://cdn.mescius.com/inputmanjs/hosted/richtexteditor/scripts/gc.inputman.richtexteditor.ja.js"></script>    (2) 
  <link rel="stylesheet" href="style.css" />    (3) 
  <title>InputManJSサンプル</title> 
</head> 
<body> 
  <h1>InputManJSサンプル</h1> 
  <label>お名前(必須):<input id="customerName"></label>    (4) 
  <label>ご年齢:<input id="customerAge"></label> 
  <label>ご購入日:<input id="purchasedDate"></label> 
  <label>お問い合わせ内容:<textarea id="queryContent"></textarea></label> 
  <label>電話番号:<input id="customerTel"></label>
  <label>メールアドレス:<input id="emailAddress"></label> 
  <label>メールアドレス(確認用):<input id="emailAddressConfirm"></label> 
  <label><button type="button">送信する</button></label> 
  <script src="script.js"></script>    (3) 
</body> 
</html>

 (1)はInputManJSのCDNからの読み込み、(2)はリッチテキストエディタ機能のCDNからの読み込みです。(3)はサンプルCSSとJavaScriptコードの読み込みです。(4)以降で、検証規則を実装するコントロールをいくつか置いておきます(button要素を除く)。各コントロールは、input要素にid属性のみ指定したもので、細かな指定はJavaScriptコードから行います。また、V5Jよりリッチテキストエディタコントロールに対しても検証機能を使用できるようになったので、「お問い合わせ内容」の項目に実装しています。こちらはtextarea要素として定義します。

 CSSファイルは、空きやレイアウト方法の指定です。具体的な内容は配布サンプルを参照してください。JavaScriptファイルには、フォームの初期表示となる以下のコードを記述します。基本的に、コントロールのインスタンスをid属性から生成するようになっています。プロパティなどの意味はコメントを参照してください。

[リスト]script.js
// 名前入力欄  
const customerName = new GC.InputMan.GcTextBox(document.getElementById('customerName'));  
// 年齢入力欄  
const customerAge = new GC.InputMan.GcNumber(document.getElementById('customerAge'), {  
  value: 20,        // 初期値  
  minValue: 0,        // 最小値  
  maxValue: 120,    // 最大値  
  maxMinBehavior: GC.InputMan.MaxMinBehavior.Keep,    // 範囲外の値の入力時には現在値を保持  
  displayPositiveSuffix: ' 歳',
  showSpinButton: true,
});  
// 購入日入力欄  
const purchasedDate = new GC.InputMan.GcDateTime(document.getElementById('purchasedDate'), {  
  displayFormatPattern: 'yyyy年M月d日',    // 日付の表示フォーマット  
  formatPattern: 'yyyy年M月d日',    // 日付の入力フォーマット  
  value: new Date(2025, 0, 1),        // 初期値  
  minDate: new Date(2024, 0, 1),    // 最小値  
  maxDate: new Date(2025, 11, 31),    // 最大値  
  maxMinBehavior: GC.InputMan.MaxMinBehavior.Keep,    // 上と同様  
  showDropDownButton: true,
  dropDownConfig: {
    dropDownType: GC.InputMan.DateDropDownType.Calendar,
    minDate: new Date(2024, 0, 1),
    maxDate: new Date(2025, 11, 31),
  },
});  
// 問い合わせ内容入力欄  
const queryContent = new GC.InputMan.GcRichTextEditor(document.getElementById("queryContent"), {  
  plugins: [GC.InputMan.GcRichTextEditorPluginItem.All],    // 全プラグイン  
  width: 600,        // コントロールの幅  
  height: 200,    // コントロールの高さ  
});  
// 電話番号入力欄 
const customerTel = new GC.InputMan.GcMask(document.getElementById('customerTel'), { 
  formatPattern: '℡ \\D{2,4}-\\D{2,4}-\\D{4}' 
}); 
// メールアドレス入力欄  
const emailAddress = new GC.InputMan.GcTextBox(document.getElementById('emailAddress'));  
const emailAddressConfirm = new GC.InputMan.GcTextBox(document.getElementById('emailAddressConfirm'));  

 index.htmlファイルをブラウザで開いて、図1のように表示されれば準備完了です。

図1:準備された入力フォーム
図1:準備された入力フォーム

次のページ
検証機能の組み込み

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
この記事の著者

WINGSプロジェクト 山内 直(WINGSプロジェクト ヤマウチ ナオ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook <個人紹介>WINGSプロジェクト所属のテクニカルライター。出版社を経てフリーランスとして独立。ライター、エディター、デベロッパー、講師業に従事。屋号は「たまデジ。」。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

提供:メシウス株式会社

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/21086 2025/04/08 12:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング