SHOEISHA iD

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

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

ComponentZine(InputMan)(AD)

JavaScript入力コントロール「InputManJS」に待望のリッチテキストエディタが登場! Webフォームで差を付けよう

軽量で多機能なJavaScript入力コントロール「InputManJS」の紹介

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

実用例:リッチテキストエディタを利用した作業日報の入力フォーム

 最後に、リッチテキストエディタおよび、InputManJSの他の入力コントロールを利用した実用例として、IT企業の作業日報を想定した入力フォームを紹介します(図10)。

図10 リッチテキストエディタを利用した作業日報の入力フォーム(p010-form)
図10 リッチテキストエディタを利用した作業日報の入力フォーム(p010-form)

 この入力フォームでは、リッチテキストエディタの他に、名前選択に(編集可能な)コンボコントロール、日時指定に日付時刻コントロール、作業概要の選択に(複数選択可能な)コンボコントロールを利用します。これらのコントロールを含めたInputManJSの各種コントロールの機能や特長はグレープシティのデモサイトで確認することができます。実装の詳細はサンプルコードを参照してください。ここでは、ポイントとなる実装をいくつか紹介します。

「プレビュー」「新規」ボタン:リッチテキストエディタの機能を外部から実行

 図10で「プレビュー」ボタンをクリックすると、リッチテキストエディタのプレビューを表示します(図11)。

図11 リッチテキストエディタのプレビュー機能(p010-form)
図11 リッチテキストエディタのプレビュー機能(p010-form)

 この処理はリスト11の通り、リッチテキストエディタのexecCommandで「プレビュー(Preview)」機能を外部から実行して実現しています。

[リスト11]リッチテキストエディタの「プレビュー」機能を呼び出す処理(p010-form/index.js)
gcRichTextEditor.execCommand(GC.InputMan.GcRichTextEditorCommand.Preview);

 同様に「新規」ボタンでは、execCommandで「新しいドキュメント(NewDocument)」機能を呼び出して、リッチテキストエディタの入力をクリアします。

「投稿」ボタン:リッチテキストエディタの内容をHTMLで参照

 図10で「投稿」ボタンをクリックすると、入力フォームの内容をまとめて1枚に表示します(図12)。

図12 入力フォームの内容をまとめて表示(p010-form)
図12 入力フォームの内容をまとめて表示(p010-form)

 この処理は、リスト12の通り実装されています。

[リスト12]「投稿」ボタンの処理(p010-form/index.js)
// 日報に表示する内容を取得 ...(1)
const title = `<h1>作業日報(${gcComboBoxUserName.text})</h1>`;
const postTime
  = `<p>${gcDateTimeDay.text} ${gcDateTimeTimeFrom.text}
  - ${gcDateTimeTimeTo.text} </p>`;
const tasks = `<p>作業概要:${gcComboBoxTasks.text}</p>`;
const richText = gcRichTextEditor.getContent('html'); // ...(1a)
// SanitizerでHTML文字列を安全に投稿エリアに設定 ...(2)
const sanitizer = new Sanitizer();
document.getElementById('content')
  .setHTML(title +'<hr class="separator">'
  + postTime + tasks + richText, sanitizer);

 (1)で各コントロールから日報に表示する内容を取得します。リッチテキストエディタの内容は、getContent('html')メソッドを実行するとHTML形式で取得できます(1a)。

 取得した内容を設定する(2)の処理で利用しているSanitizerは、HTML文字列を安全にHTML内に挿入するサニタイズ機能を提供します。詳細はMozillaのドキュメントを参照してください。

まとめ

 本記事では、Webフォーム用部品「InputManJS」に追加されたリッチテキストエディタについて、さまざまな機能や利用例を紹介しました。現状、さまざまなリッチテキストエディタが提供されていますが、商用利用可能で、APIの参照やサポートが日本語で対応できる点で、InputManJSのリッチテキストエディタは有力な選択肢と言えます。

参考資料

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

  • このエントリーをはてなブックマークに追加
ComponentZine(InputMan)連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト  吉川 英一(ヨシカワ エイイチ)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

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

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

静岡県榛原町生まれ。一橋大学経済学部卒業後、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】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

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

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/18233 2023/09/27 12:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング