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

JavaScript输入验证问题:需实现逗号分隔与换行格式的错误提示

修复JavaScript输入验证逻辑问题

当前的验证函数存在逻辑错误,导致符合要求的输入也会弹出错误提示。以下是针对两个验证规则的修正方案:

问题分析

原代码的核心问题:

  1. 未定义input_text变量,直接调用match方法会报错;
  2. match返回的是数组,直接与字符串比较永远不相等,必然触发错误提示;
  3. 没有实现「每个输入项单独占一行」的验证逻辑。

修正后的验证函数

function verify() {
    const inputEl = document.getElementById('input-text');
    const inputValue = inputEl.value.trim();
    
    // 验证输入为空的情况
    if (!inputValue) {
        alert("不能为空,请输入模块名称和分数,用逗号分隔,每行一个条目");
        return false;
    }
    
    // 按换行分割输入,过滤掉空行
    const lines = inputValue.split('\n').map(line => line.trim()).filter(line => line);
    
    // 验证每行都包含逗号
    const hasNoCommaLine = lines.some(line => !line.includes(','));
    if (hasNoCommaLine) {
        alert("所有模块名称和分数必须用逗号分隔");
        return false;
    }
    
    // 验证每行格式为「模块名称,分数」,避免同一行多个条目或格式错误
    const invalidLineFormat = lines.some(line => {
        const parts = line.split(',');
        // 确保每行只有一个逗号,分数是数字,模块名称不为空
        return parts.length !== 2 || isNaN(parts[1].trim()) || parts[0].trim() === '';
    });
    if (invalidLineFormat) {
        alert("请严格按照「模块名称,分数」格式输入,每行仅填一个条目");
        return false;
    }
    
    // 所有验证通过,返回true允许后续执行getTotal()
    return true;
}

修正按钮点击逻辑

原按钮点击时会同时执行verify()和getTotal(),即使验证失败也会执行计算。修改为只有验证通过才执行getTotal():

<button class="sgcbutton-active" onclick="if(verify()) getTotal();">Total Marks</button>

正确输入示例

Programming,70
Data,60
Computing,40

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 22:15:40