パーツ番号 04-11-10 ・ JavaScript使用
全項目入力で有効化される送信ボタン
すべての入力欄が埋まって初めて送信ボタンが色付きで押せるようになるフォーム。WordPressのお問い合わせフォームで未入力のまま送信されるのを防ぎたいときに便利です。
プレビュー
ソースコード
HTML
<form class="d04-11-10-form" novalidate>
<input type="text" class="d04-11-10-in" placeholder="お名前" aria-label="お名前">
<input type="email" class="d04-11-10-in" placeholder="メールアドレス" aria-label="メールアドレス">
<textarea class="d04-11-10-in d04-11-10-ta" placeholder="お問い合わせ内容" rows="2" aria-label="お問い合わせ内容"></textarea>
<button type="submit" class="d04-11-10-btn" disabled>送信する</button>
<p class="d04-11-10-ok">送信しました。ありがとうございます!</p>
</form>CSS
.d04-11-10-form{width:min(260px,100%);display:flex;flex-direction:column;gap:8px}
.d04-11-10-in{width:100%;padding:10px 12px;font-size:13px;font-family:inherit;border:2px solid #d5d9e0;border-radius:8px;outline:none;background:#fff;transition:border-color .25s;resize:none}
.d04-11-10-in:focus{border-color:#4a6cf7}
.d04-11-10-btn{margin-top:4px;padding:11px;font-size:14px;font-weight:700;color:#fff;background:#c3c9d4;border:none;border-radius:8px;cursor:not-allowed;transition:background .25s}
.d04-11-10-btn:not(:disabled){background:#4a6cf7;cursor:pointer}
.d04-11-10-btn:not(:disabled):hover{background:#3a58d6}
.d04-11-10-ok{display:none;margin:0;padding:9px;text-align:center;font-size:12px;font-weight:700;color:#1c7c4e;background:#e2f6ec;border-radius:8px}
.d04-11-10-form.is-success .d04-11-10-ok{display:block}
.d04-11-10-form.is-success .d04-11-10-btn{display:none}JavaScript
(function(){
var form=document.querySelector('.d04-11-10-form');
if(!form)return;
var inputs=Array.prototype.slice.call(form.querySelectorAll('.d04-11-10-in'));
var btn=form.querySelector('.d04-11-10-btn');
function checkAll(){
var filled=inputs.every(function(el){return el.value.trim()!=='';});
btn.disabled=!filled;
}
inputs.forEach(function(el){el.addEventListener('input',checkAll);});
form.addEventListener('submit',function(e){
e.preventDefault();
if(btn.disabled)return;
form.classList.add('is-success');
});
})();クラス名 .d04-11-10 は本ライブラリ内での識別用です。複数のパーツを同じページで使う場合は、重複しないよう名前を変更してください。