Javascript 通过正则表达式 id 搜索有选择地清除表单输入

标签 javascript forms matching

这个与我迄今为止找到的解决方案有点不同。我拥有的是一个包含近 500 个标签的 HTML 表单(基于浏览器的考勤卡输入占 7 天的 15 小时窗口,输入间隔为 15 分钟)。我将这些输入标签命名为相当直观。周一的输入被命名为 M600、M615、M630、M645、M700 ... M2100。星期二是 T###、W### 等。所有这些都采用单一形式,提交时对所有内容进行 JSON 编码并将其写入文本数据库以便稍后动态调用。如果表单尚未提交(通过隐藏标记来检测提交,页面会将 JSON 文件中的值拉入并解码到表单中作为默认输入值。

我想要做的是以某种方式为每一天创建一个 html 链接,该链接将仅清除当天的值集。我有一个想法,这会以某种方式从链接(或按钮)onClick 事件触发,并运行类似于 form.field.this.value("") 的脚本。但是,我不需要引用“this”,而是需要使用相当于正则表达式搜索字符串(例如 $(M\d)^)来引用所有输入。

从算法意义上来说:

<input type="text" value="1234" name="M900"/>
<input type="text" value="3456" name="M915"/>
<input type="text" value="1234" name="T900"/>
<input type="text" value="3456" name="T915"/>
<a onClick="clearMondayOnly">Clear Monday's Fields</a>

<script>
function clearMondayOnly() {

  for each input element where name matches "M###" do
   $0.value=""
  end
}
</script>

诚然,我对 javascript 不太熟悉,但我确信如果我知道如何启动匹配字符串,我可以摸索过去。此外,我想尝试避免使用 jQuery 对象之类的东西,因为我确信这可以通过直接的 JS 来完成。

谢谢。

最佳答案

这样的东西应该可以在简单的现代 JavaScript 中工作:

function clearDays() {

  var days = [].slice.call( arguments ),
      inputs = document.querySelectorAll(
        'input[name^='+ days.join('], input[name^=') +']'
      );

  [].forEach.call( inputs, function( input ) {
    input.value = '';
  });

}

你可以这样调用它:

clearDays('M');
clearDays('M','T');
clearDays('M','W','Su');
// etc...

关于Javascript 通过正则表达式 id 搜索有选择地清除表单输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14143428/

相关文章:

C#-Monogame.Forms : Question about getting mouse coordinates

regex - 你如何在 java 中不能包含数字的单词上使用正则表达式?

php - 将用户输入的标题与类别匹配 - 大型 INNODB 数据库

algorithm - 在观察可以有不止一个可能的伙伴观察的条件下消除成对的观察

javascript - 通过使用 jquery 进行表单验证来禁用和启用按钮

javascript - 在javascript中将另一个数组中的数组对象打印为特定格式

php - 使用 PHP 提交具有三个按钮的相同表单

asp.net-mvc - 表单例份验证和子域

javascript - 可导航表中的已筛选行

javascript - NodeJS/Electron : Is it possible to register “STRG+<” as a globalShortcut and how can I do this?