TextInputGuard日本語向け
入力制御ライブラリ
IME入力でも安定したフォーム入力を実現
TextInputGuard は、日本語入力環境を前提に設計された入力補助ライブラリです。
<input> / <textarea> に対して、全角混在・桁数制限・小数処理・表示整形など、日本語環境特有の入力制御を扱いやすい形で提供します。
業務系フォームや金額入力など、IME の影響を受けやすい入力欄でも、表示用の値と送信用の値を分離しながら、安定した入力制御を実現できます。
data-tig-* 属性からの自動適用(autoAttach)npm i text-input-guard会員コードのよくある構成例です(前後trim・ASCII大文字化・文字種制限・文字数制限)。
<input id="memberCode" type="text" inputmode="url" />import { attach, rules } from "text-input-guard";
const input = document.querySelector("#memberCode");
const guard = attach(input, {
rules: [
rules.imeOff(),
rules.ascii({
case: "upper"
}),
rules.filter({
category: ["alpha-upper", "digits"],
allow: /[-_]/
}),
rules.length({
max: 5,
mode: "block",
unit: "grapheme"
}),
rules.trim()
]
});金額入力のよくある構成例です(全角許可・符号/小数OK・桁制御・カンマ表示・円マーク表示等)。
<input id="price" type="text" inputmode="decimal" style="text-align: right" />import { attach, rules } from "text-input-guard";
const input = document.querySelector("#price");
const guard = attach(input, {
rules: [
rules.numeric({
allowFullWidth: true,
allowMinus: true,
allowDecimal: true,
allowEmpty: false
}),
rules.digits({
int: 8,
frac: 2,
modeInt: "block",
modeFrac: "block",
fixFracOnBlur: "round",
forceFracOnBlur: true
}),
rules.prefix({
text: "¥",
showWhenEmpty: true
}),
rules.suffix({
text: " JPY"
}),
rules.comma()
]
});
guard.setValue("12345.6");次は、目的に合わせてここを見るのがおすすめです。
MIT