这个与我迄今为止找到的解决方案有点不同。我拥有的是一个包含近 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/