こんにちは
一案として、以下のようにしてみると、いかがでしょうか?
・各<input type="text">
に入力されている値のすべてが半角数字1個である場合、正しい入力と判定される。
・上記以外においてはエラーと判断され、ボタンがdisabled になり、赤字でエラーと表示される。
以下は、上記をコードにしたものです。
javascript
1const inputs = [...document.querySelectorAll('input[type="text"]')];
2const button = document.querySelector('input[type="button"]');
3const error = document.querySelector('#error');
4
5const check = () => {
6 const valid = inputs.every(e => /[0-9]/.test(e.value));
7 button.disabled = !valid;
8 error.textContent = valid ? "" : "エラー";
9}
10
11inputs.forEach(input => {
12 input.addEventListener('input', check);
13});
div#error
には、CSSで赤字を設定しておきます。
css
1#error { color: red; }
何か、意図通りではない点があれば、コメントからお知らせください。
以上、参考になれば幸いです。
備考
上記のコードの中で使っている正規表現 /[0-9]/
を /^[0-9]$/
とする必要がない理由は、各 input要素に、 maxlength="1"
があるので、入力される文字列の長さが最大1であることが事前に分かっているからです。