You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何通过JavaScript或jQuery点击函数验证HTML表格指定列?

验证HTML表格指定列的实现方案(JavaScript/jQuery)

没问题,我来帮你实现点击按钮后对表格里的ID和URL列进行验证的功能。首先先指出你示例代码里的一个小问题:多个<tr><td>使用了重复的id属性(比如tdtable_idtable_url),这不符合HTML规范(ID必须全局唯一),所以我先把这些重复ID改成class,这样后续选择元素更合理。


修正后的HTML代码

先把你的表格代码调整一下,确保元素选择符合法:

<table class="table table-bordered table-striped table-responsive" id="tableid">
  <thead>
    <tr>
      <th class="check-col">
        <label>
          <input id="check_all" type="checkbox" name="check">
          <span class="label-text table-header-check"></span>
        </label>
      </th>
      <th class="other-col">ID</th>
      <th>URL</th>
    </tr>
  </thead>
  <tbody id="table-body">
    <tr class="table-row">
      <td class="check-col">
        <label>
          <input class="select_option" type="checkbox" name="check">
          <span class="label-text"></span>
        </label>
      </td>
      <td class="table-id other-col" name="id" contenteditable='true'>1</td>
      <td class="table-url" name="url" contenteditable='true'>https://fb.com</td>
    </tr>
    <tr class="table-row">
      <td class="check-col">
        <label>
          <input class="select_option" type="checkbox" name="check">
          <span class="label-text"></span>
        </label>
      </td>
      <td class="table-id other-col" name="id" contenteditable='true'>2</td>
      <td class="table-url" name="url" contenteditable='true'>http://twitter.com/</td>
    </tr>
    <tr class="table-row">
      <td class="check-col">
        <label>
          <input class="select_option" type="checkbox" name="check">
          <span class="label-text"></span>
        </label>
      </td>
      <td class="table-id other-col" name="id" contenteditable='true'>3</td>
      <td class="table-url" name="url" contenteditable='true'>http://google.com/</td>
    </tr>
  </tbody>
</table>
<div class="buttons-section">
  <button type="button" id="valid" class="btn btn-default custom-btn">VALIDATE</button>
</div>

方案一:原生JavaScript实现

我们给验证按钮添加点击事件,遍历每一行的ID和URL列,分别验证格式是否正确:

// 获取验证按钮
const validateBtn = document.getElementById('valid');
// 定义验证规则函数
function isValidId(idValue) {
  // 验证ID是正整数
  return /^[1-9]\d*$/.test(idValue.trim());
}

function isValidUrl(urlValue) {
  // 简单的URL格式验证正则(可根据需求调整)
  const urlRegex = /^(https?:\/\/)?([\da-z.-]+)\.([a-z.]{2,6})([/\w.-]*)*\/?$/;
  return urlRegex.test(urlValue.trim());
}

// 添加点击事件监听
validateBtn.addEventListener('click', function() {
  // 获取所有表格行
  const rows = document.querySelectorAll('.table-row');
  let isValid = true;

  // 清除之前的验证样式
  document.querySelectorAll('.table-id, .table-url').forEach(cell => {
    cell.style.border = '';
  });

  rows.forEach(row => {
    const idCell = row.querySelector('.table-id');
    const urlCell = row.querySelector('.table-url');
    const idValue = idCell.textContent;
    const urlValue = urlCell.textContent;
    const rowNum = Array.from(rows).indexOf(row) + 1;

    // 验证ID
    if (!isValidId(idValue)) {
      idCell.style.border = '2px solid red';
      isValid = false;
      alert(`第${rowNum}行的ID格式错误,请输入正整数!`);
    }

    // 验证URL
    if (!isValidUrl(urlValue)) {
      urlCell.style.border = '2px solid red';
      isValid = false;
      alert(`第${rowNum}行的URL格式错误,请输入合法的HTTP/HTTPS地址!`);
    }
  });

  if (isValid) {
    alert('所有列验证通过!');
  }
});

逻辑说明:

  • 先定义两个验证函数isValidIdisValidUrl,分别验证ID是否为正整数、URL是否符合基本格式。
  • 点击按钮后,先清除之前的验证样式(红色边框),避免干扰新的验证结果。
  • 遍历每一行,获取ID和URL单元格的内容,分别调用验证函数。
  • 如果验证不通过,给对应单元格添加红色边框,并弹出提示;全部验证通过则提示成功。

方案二:jQuery实现

如果你的项目已经引入了jQuery,代码会更简洁:

// 定义验证规则函数
function isValidId(idValue) {
  return /^[1-9]\d*$/.test($.trim(idValue));
}

function isValidUrl(urlValue) {
  const urlRegex = /^(https?:\/\/)?([\da-z.-]+)\.([a-z.]{2,6})([/\w.-]*)*\/?$/;
  return urlRegex.test($.trim(urlValue));
}

// 点击事件绑定
$('#valid').on('click', function() {
  let isValid = true;

  // 清除之前的验证样式
  $('.table-id, .table-url').css('border', '');

  $('.table-row').each(function(index) {
    const $row = $(this);
    const idValue = $row.find('.table-id').text();
    const urlValue = $row.find('.table-url').text();
    const rowNum = index + 1;

    // 验证ID
    if (!isValidId(idValue)) {
      $row.find('.table-id').css('border', '2px solid red');
      isValid = false;
      alert(`第${rowNum}行的ID格式错误,请输入正整数!`);
    }

    // 验证URL
    if (!isValidUrl(urlValue)) {
      $row.find('.table-url').css('border', '2px solid red');
      isValid = false;
      alert(`第${rowNum}行的URL格式错误,请输入合法的HTTP/HTTPS地址!`);
    }
  });

  if (isValid) {
    alert('所有列验证通过!');
  }
});

逻辑说明:

  • 核心逻辑和原生JS一致,只是用jQuery的选择器和方法简化了DOM操作。
  • 使用$.trim()处理文本内容,each()遍历表格行,find()快速定位当前行的目标单元格。

内容的提问来源于stack exchange,提问作者Muhammad Yasir Asif

火山引擎 最新活动