出于某种原因,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确实显示它应该显示。
感谢您的帮助!
答案 0 :(得分:1)
我已经使用了您的代码,发现了以下问题:
upload_1中的代码可能工作不正确(我的意思是这里可能是无限循环,因为一旦代码试图隐藏div它会导致onchange再次被触发)一旦我从上传处理程序中移除此代码,一切正常都很好:
$("#div_1").hide('clip', {}, 'fast');
$("#waiting_1").show('clip', {}, 'fast');