Javascript清晰表单选择性地使用regexp id搜索

时间:2013-01-03 16:55:02

标签: 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来完成。

感谢。

2 个答案:

答案 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>

Demonstration