Laravel中基于条件实现非禁用的只读勾选复选框问题
解决方案
你的问题出在第二个属性的Blade语法逻辑上,&&的写法在这里无法正确输出onclick属性。下面是修正后的代码,同时补充了更稳妥的只读控制方案:
修正后的HTML代码
<input type="checkbox" {{ $client->stay_night > 0 ? 'checked' : '' }} {{ $client->stay_night > 0 ? 'onclick="return false;" onmousedown="return false;"' : '' }} {{ $client->stay_night > 0 ? 'style="pointer-events: none;"' : '' }} />
代码说明
- 修正条件判断:将原来的
&&逻辑替换为三元运算符?:,确保当stay_night > 0时,正确输出onclick和onmousedown属性,阻止用户通过点击或鼠标按下操作修改复选框状态。 - 添加CSS辅助控制:通过
pointer-events: none禁用复选框的所有鼠标交互,进一步强化只读效果,避免用户通过其他方式修改状态的可能。 - 保持非禁用状态:全程没有使用
disabled属性,完全符合你的需求。
如果需要把CSS抽离到样式表中(更规范的做法),可以给复选框加一个类:
<input type="checkbox" class="{{ $client->stay_night > 0 ? 'readonly-checkbox' : '' }}" {{ $client->stay_night > 0 ? 'checked' : '' }} />
对应的CSS:
.readonly-checkbox { pointer-events: none; cursor: not-allowed; }
内容的提问来源于stack exchange,提问作者ghost_of_the_code
相关产品推荐
相关产品推荐

