ちょっと良いUIおれおれAdvent Calendar 2024 – 05日目

フォーム送信を HTML ではなく JavaScript から管理するとき、応答待ちの間はくるくるを出すのと合わせて各種入力を非活性化しておいてほしいなと思います。何か条件を満たすまで利用できないようにしておくとかも。

でも入力欄が 100 個あると全部に disabled 付けるのダルいですよね。<fieldset> を使うとひとつで済みます。あきらめないで!

デモ

<fieldset>

<fieldset> はフォームのグループ化を行う要素です。普通は(本来は?) <legend> と組み合わせて使います。

disabled を受け付けて、その中にある要素をすべて非活性化します。

<fieldset disabled>
…
</fieldset>

JavaScript からも disabled プロパティで操作できます。

const fieldset = document.querySelector('fieldset');
fieldset.disabled = true;

<fieldset> の外側には当然影響しません。今回の用途なら <form> の中全体を囲んでみましょう。レイアウトをフォームにまとめたい場合は display: contents にしてグリッドやフレックスを透過させると便利です。

おしまい

そういえばもう Ajax って言わないですか?

参考