2

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

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

在算法意义上:

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

谢谢。

4

2 回答 2

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...
于 2013-01-03T17:13:56.937 回答
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>

示范

于 2013-01-03T16:58:34.343 回答