2

これは、これまでに見つけたソリューションとは少し異なります。私が持っているのは、ほぼ 500 のタグを含む HTML フォームです (ブラウザーベースのタイムカード入力は、15 分間隔の入力で 7 日間すべて 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 だけで実行できると確信しているからです。

ありがとう。

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 に答える