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

jQuery点击保存按钮时如何一次性校验所有邮政编码起止输入值大小

多行邮政编码起止值校验实现方案

问题原因

原有代码直接通过类选择器$('.zip-first').val()获取值时,jQuery默认只会返回第一个匹配元素的取值,因此仅能校验第一行的邮编数据。

解决思路

遍历所有<tr>行,逐行获取当前行内的起始、结束邮编输入值做校验,分别标记不通过的行。

优化后代码

$(".zip-save").on('click', function(e) {
  e.preventDefault();
  var isFormValid = true;
  // 清空上一次校验的错误提示和异常边框样式
  $('.zip-error').remove();
  $('.zip-last').css('border-color', 'rgba(33, 33, 33, 0.12)');

  // 遍历每一行tr做校验
  $('tr').each(function() {
    const $currentRow = $(this);
    const zipStart = Number($currentRow.find('.zip-first').val());
    const zipEnd = Number($currentRow.find('.zip-last').val());
    
    // 两个值都非空时才做大小校验,如需必填校验可自行补充空值判断逻辑
    if (zipStart && zipEnd && zipStart > zipEnd) {
      isFormValid = false;
      // 仅标记当前行的结束邮编输入框
      $currentRow.find('.zip-last').css('border-color', 'rgba(218, 71, 58, 0.5)');
      // 插入错误提示,加自定义类方便后续统一清理
      $currentRow.after('<p class="zip-error" style="color:#da473a; margin: 4px 0;">zip-to value must be greater than zip-from</p>');
    }
  });

  // 所有行校验通过后执行后续逻辑
  if (isFormValid) {
    // 此处补充表单提交、数据上传等后续业务代码
    console.log('所有行校验通过');
  }
});

补充说明

  • 对输入值做了数字类型转换,避免字符串比较时出现'999' > '1000'的逻辑错误
  • 仅为校验不通过行的输入框添加异常样式,不影响其他正常行
  • 错误提示添加了自定义类,每次校验前统一清理,避免页面堆积重复提示
  • 原有HTML中<tr>之间插入</br>不符合table元素语法规范,建议移除后通过CSS设置tr的间距实现相同效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:36:04