选择文件后,无法使用.hide()隐藏文件输入的父div

时间:2012-02-12 03:14:26

标签: javascript jquery html jquery-ui

出于某种原因,jquery的.hide()在选择文件后不会隐藏包含文件输入的div。当没有选择文件时,我可以运行js并隐藏它。见下面的例子:

<script type="text/javascript">
function upload_1(ele){

 ele.form.submit();

 $( "#div_1" ).hide('clip', {}, 'fast');
 $( "#waiting_1" ).show('clip', {}, 'fast');
}
</script>
<div id="div_1" class="ajaxVisible" style="float: left;" >
    <form method="post" action="action.php" enctype="multipart/form-data" id="form_1" target="hiddenIFrame1" >
        <input type="file" name="file" size="1" onchange="upload_1(this);" id="image_1" />
    </form>
    </div>
    <iframe style="width:0px;height:0px;border:0px;" name="hiddenIFrame1"></iframe>
    <div id="waiting_1"  style="display: none; float: left;">
<center><img src="abc.gif" height="15px" /></center>
</div>

以下是我在没有选择文件时用来测试的代码:

function ajaxHide() {

   $( "#div_1" ).hide('clip', {}, 'fast');
   $( "#waiting_1" ).show('clip', {}, 'fast');
   }

我有一个按钮:

<button onclick="ajaxHide();">Hide</button>

同样,我可以点击上面的按钮来测试没有选择文件,div完全隐藏。当我运行实际用例并选择一个文件时,它在选择一个文件后不会隐藏它,但隐藏的等待div确实显示它应该显示。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我已经使用了您的代码,发现了以下问题:

upload_1中的代码可能工作不正确(我的意思是这里可能是无限循环,因为一旦代码试图隐藏div它会导致onchange再次被触发)

一旦我从上传处理程序中移除此代码,一切正常都很好:

$("#div_1").hide('clip', {}, 'fast');
$("#waiting_1").show('clip', {}, 'fast');