ユーザーが「すべて選択」チェックボックスをクリックしてすべてのチェックボックスを選択できるようにするjQueryがあります。
私のjQueryは次のようになります。
$('.select-all').on('click', function(){
// alert($(this).attr('name')); - For debugging
checkboxes = $(this).closest('.form-item').find('input[type=checkbox]');
if($(this).attr('checked'))
{
$(checkboxes).prop('checked', true);
}
else
{
$(checkboxes).prop('checked', false);
}
});
私の「すべて選択」チェックボックスには「すべて選択」のクラスがあり、クリックするとこのjQueryコードがトリガーされます。これはすべてうまくいきます。
フォームのさらに下には、ファイル入力もあります。ファイル入力フィールドをクリックすると、何らかの理由でIE9でも上記のコードがトリガーされます。両者は何の関係もありません。
ここに私のファイル入力HTMLがあります:
<div id="form<?php echo $this->id; ?>_file" class="form-item">
<label for="file" class="mandatory"><span class="invisible">Mandatory field</span> Select file*</label>
<span class="clearfix"></span>
<input id="file-input" name="file" type="file" />
<p class="tl_help tl_tip">Select the file to upload.</p>
</div>
チェックボックスの HTML は次のとおりです。
<div id="form52_country" class="form-item checkbox-group">
<label for="country" class="mandatory"><span class="invisible">Mandatory field</span> Country*</label>
<span class="clearfix"></span>
<input class="select-all" type="checkbox" name="sa" value="">Select all<br>
<input type="checkbox" name="country[]" value="al"/>Albania<br>
<input type="checkbox" name="country[]" value="ar"/>Argentina<br>
// Rest of checkboxes continue as above
</div>
ここでさらに奇妙になります。jQueryコードでアラートのコメントを外し、ファイル入力をクリックしようとすると、「すべて選択」チェックボックスボタンの名前がアラートされます。
ここで何が起こっているのですか?意味がわかりません。IEでのみ発生します。ファイル入力フィールドを「すべて選択」チェックボックスフィールドのように扱っているようです。
ありがとう
編集 - 解決済み
この原因を突き止めることができました。フォームの他の場所にあるラベル タグの 1 つを閉じていませんでした。これを修正した後、問題は解決しました。