2013-02-20 65 views
0

我有一些jQuery,允许用户通过点击'全选'复选框来选择所有复选框。IE9文件输入触发错误的点击事件

我的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中。看起来好像它正在处理我的文件输入字段,就好像它是我的“全选”复选框字段。

感谢

编辑 - 解决

管理追查这个原因。在修复此问题后,我没有关闭表单中其他标签的其中一个标签。

+0

我们也许可以看到**所有* *相关的HTML?你已经提到了复选框,但没有显示它们的HTML。 – 2013-02-20 11:52:38

+0

我已经添加了他们,谢谢。 – jd182 2013-02-20 12:04:05

+0

您并未关闭Select all复选框标记:'',尝试将其更改为:'。它可能会将所有事件作为复选框的子元素处理,因此点击事件会冒泡,尽管这会有点奇怪。 – 2013-02-20 12:17:24

回答

0

我不知道它的您冲突的原因..我已经遇到了同样的问题在IE8

<input id="file-input" name="file" type="file" /> 

输入停课

<input id="file-input" name="file" type="file" ></input> 
+0

感谢您的支持,不幸的是,它并没有解决我的问题。 – jd182 2013-02-20 11:53:06