日期:2014-05-16  浏览次数:20374 次

IE下的模拟点击与onchange事件问题
楼主做了两个页面,
一个是a.php

<input type="button" onClick="$('#up').click();" value="上传照片">
<form action="b.php" method="post" enctype="multipart/form-data" target="uploadIframe" id="form1"  style="display:none">
<input type="file" name="up" id="up" onchange="$('#sub').click(); ">
<input type="submit" name='sub' id="sub">
</form>
<iframe name="uploadIframe" id="uploadIframe" style="display:none"></iframe>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>

一个是b.php

<script>alert('1')</script>


结果在IE下无法alert,在其他浏览器下都可以。
请问是什么问题导致的……非常感谢。。
jquery ie input iframe button

------解决方案--------------------
这是IE对OnChange这个方法的支持与其他浏览器不同。


IE的OnChange,不是修改之后触发,而是控件离开焦点的时候触发。

与其他浏览器的修改之后立马调用OnChange不一样。这地方IE略有坑爹。

所以很多情况下避免使用OnChange
------解决方案--------------------
file控件因为一些安全问题,不能再做模拟触发点击了

建议用CSS把file控件的透明度设为0,覆盖在上传照片要点击的按钮上,这样看起来是点击了那个按钮,其实点击的是透明度为0的file控件。
------解决方案--------------------
试试这样
<form action="b.php" method="post" enctype="multipart/form-data" target="uploadIframe" id="form1">
    <input type="file" name="up" id="up" onchange="this.parentNode.submit()" style="border: 1px solid red;border:1px solid red;position: absolute;filter: alpha(opacity=0);opacity: 0;width: 100px">
    <input type="button" value="上传照片">
</form>
<iframe name="uploadIframe" id="uploadIframe" style="display:none"></iframe>