You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Laravel中如何校验三个number类型输入框的数值之和等于100?

实现方案

分为前端实时交互校验和后端兜底校验两部分,建议两者都做,兼顾用户体验和数据安全性。

1. 前端校验(输入时实时提示)

修改blade.php代码,添加事件监听实时计算三个输入框的和,不符合要求时阻止表单提交并提示用户:

<!-- 给input添加公共class方便绑定事件,同时可限制最小值为0避免负数 -->
<input type="number" name="number1" class="percent-input" min="0" />
<input type="number" name="number2" class="percent-input" min="0" />
<input type="number" name="number3" class="percent-input" min="0" />
<!-- 用来显示错误提示的容器 -->
<span id="sum-error" style="color:red;display:none;">三个数值之和必须等于100</span>

<!-- 注意给你的表单添加id为my-form,和下方代码对应 -->
<script>
const inputs = document.querySelectorAll('.percent-input');
const form = document.getElementById('my-form');
const errorTip = document.getElementById('sum-error');

// 输入时实时校验
inputs.forEach(input => {
  input.addEventListener('input', checkSum);
});

// 表单提交时校验
form.addEventListener('submit', (e) => {
  if(!checkSum()) {
    e.preventDefault();
  }
});

// 校验和是否为100的方法
function checkSum() {
  let sum = 0;
  inputs.forEach(input => {
    sum += Number(input.value) || 0;
  });
  const isValid = sum === 100;
  errorTip.style.display = isValid ? 'none' : 'block';
  return isValid;
}
</script>

2. 后端校验(兜底防止非法请求)

修改控制器代码,在原有必填校验的基础上增加和为100的判断,校验不通过时返回错误信息:

public function store(Request $request) {
    $data = $request->validate([
       // 如果允许输入小数,把integer改成numeric即可
       'number1' => 'required|integer|min:0',
       'number2' => 'required|integer|min:0',
       'number3' => 'required|integer|min:0',
    ]);
    
    $sum = $data['number1'] + $data['number2'] + $data['number3'];
    if ($sum !== 100) {
        // 校验不通过返回表单页并携带错误信息、用户已输入的内容
        return back()->withErrors(['sum' => '三个数值之和必须恰好等于100'])->withInput();
    }

    $myDb = new Mynumber();
    $myDb->number1 = $data['number1'];
    $myDb->number2 = $data['number2'];
    $myDb->number3 = $data['number3'];
    $myDb->save();
    
    // 保存成功后的跳转逻辑可自行补充
    return back()->with('success', '保存成功');
}

如果需要复用该校验规则,也可以自定义Laravel验证规则来封装和为100的判断逻辑。


内容的提问来源于stack exchange,提问作者TrJoke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 01:24:05