コンテンツにスキップ

092. hx-prompt(ユーザー入力の要求:実行時に「一言」添えてもらう)

原理:対話から始まるアクション

単なる確認の一歩先へ

前回の hx-confirm は「はい/いいえ」を選ぶだけでしたが、時には「実行するために、何か一つ情報を入力してほしい」という場面があります。 - 「削除するために、確認のために『DELETED』と入力してください」 - 「新しいフォルダの名前を決めてから作成してください」

HTMXの hx-prompt 属性を使うと、JavaScriptを書くことなく、「入力欄付きのダイアログを出し、ユーザーが入力した文字をリクエストと一緒にサーバーへ送る」という高度なやり取りが可能になります。


実践:入力とアクションを一つに繋げる

1. 削除の最終確認(キーワード入力)

間違いを防ぐために、特定の言葉を打たせる例です。

<!-- 
  hx-prompt: ダイアログの内容。
  入力された文字は "hx-prompt" という名前の「リクエストヘッダー」に入れて送られます。
-->
<button hx-delete="/project/123" 
        hx-prompt="削除するには 'YES' と入力してください">
    プロジェクトを削除
</button>

2. サーバー側での受け取り

サーバー側では、届いたリクエストのヘッダー(hx-prompt)をチェックします。もし中身が YES でなければ、処理を中断してエラーを返すといったプログラミングが可能です。

3. ステップ・バイ・ステップ解説

  1. 「一声」必要な場面の設定: 実行に際してユーザーの意思表明や、短いテキストが必要な場所を探します。
  2. 属性の追加: hx-prompt="指示文" を書き込みます。
  3. サーバーの対応: リクエストヘッダーから値を取り出せるようにサーバー側のプログラムを少しだけ調整します。

比較:専用フォーム vs hx-prompt

専用の入力フォーム(モーダル等)

  • メリット: デザインを自由に凝れる。長い文章も打てる。
  • デメリット: HTMLとCSS、表示/非表示のロジックを気にする必要があり、実装が大変。

hx-prompt (今回)

  • メリット: 属性一行で完成!準備が一切不要。
  • デメリット: デザインがブラウザ標準のものになり、味気ない。

まとめ:初心者のための「簡潔な対話」

hx-prompt は、大掛かりなフォームを作るまでもない「ちょっとした入力」をスマートに処理するための近道です。

  • 管理者機能に最適: 見た目にこだわらない管理画面などでは、これほど便利な機能はありません。サクサクと機能を追加できます。
  • 「hx-prompt」ヘッダーを忘れずに: 入力内容はURLのパラメータではなく「ヘッダー」として届きます。サーバー側のプログラミングガイド(第7章で詳述)を見ながら、正しく値を取り出しましょう。
  • 入力がない時は自動キャンセル: ユーザーが入力せずに「キャンセル」を押したり、窓を閉じたりすれば、通信はそもそも発生しません。この安全性も魅力の一つです。

問いかけに、答える。hx-prompt を使って、ユーザーの意思をダイレクトにサーバーへ届ける、効率的で力強い機能を実装してください。次の記事では、通信中の「待ち時間」を視覚的に伝える「hx-indicator」(093. hx-indicator)をご紹介します。