这个与我迄今为止找到的解决方案略有不同。我所拥有的是一个包含近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来完成。
感谢。
答案 0 :(得分:2)
这样的东西应该在普通的现代 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...
答案 1 :(得分:0)
如果我找到你,你只想(星期日):
$('input[name^="Su"]').val('');
完整的代码将是
<a clear="M" >Clear Monday's Fields</a>
...
<a clear="Su" >Clear Sundays</a>
<script>
$('a[clear]').click(function(){
$('input[name^="'+$(this).attr('clear')+'"]').val('');
});
</script>