
使用 hyperscript 实现“达到最大选中数后自动禁用未选中复选框”,支持实时计数、条件禁用与恢复,无需 javascript 手动绑定事件。
使用 hyperscript 实现“达到最大选中数后自动禁用未选中复选框”,支持实时计数、条件禁用与恢复,无需 javascript 手动绑定事件。
在表单交互中,常需限制用户最多选择 N 个选项(如“最多选 5 项”)。Hyperscript 提供了简洁、声明式的解决方案,可直接在 HTML 中通过 _ 属性完成逻辑控制,避免冗余 JS 脚本。
以下是一个完整、可靠且可复用的实现方案:
✅ 正确的 Hyperscript 逻辑(推荐写法)
将 Hyperscript 指令绑定到任意一个复选框容器或父级 ? 关键说明: 通过以上方案,你即可零 JS 代码、纯 HTML 声明式地实现专业级复选框数量管控,兼顾可维护性、可读性与用户体验。<div class="mb-4 overflow-scroll" _="on click from <input[type='checkbox']/>
if length of <input:checked/> > 5
add @disabled to <input:not(:checked)/>
else
remove @disabled from <input/>
end">
<p class="mb-0">= $stelle['angebot_headline'] ?? 'N/A' ?></p>
<div class="form-text mt-0 mb-3">(Max. 5 auswählbar)</div>
<?php foreach ($stelle['angebote'] ?? [] as $angebot): ?>= view('personalKampagne/stellenangebot/_angebot', ['angebot' => $angebot]) ?>
<?php endforeach ?>
</div>
⚠️ 注意事项与最佳实践
_="on click from <input>
set limit to (get my dataset.threshold || 5)
if length of <checked></checked> > limit
add @disabled to <not></not>
else
remove @disabled from <input>
end"
input:disabled + label { opacity: 0.6; cursor: not-allowed; }
✅ 补充:兼容性与调试技巧
<script src="https://unpkg.com/hyperscript.org@0.9.12"></script>










