有一个非常相似的问题here,但我正在做一些不同的事情。在我的情况下提交表单如果出现故障我正在做history.back()以保留表单中的所有值,但是在输入文件的情况下,文件名仍然存在,但实际上没有文件。因此,为了避免混淆并让用户知道它需要再次上传文件,我想清除该元素的值,以及另一个具有文件描述的输入文本。
向其添加autocomplete="off"
属性可以防止浏览器缓存该值,但这可以在Chrome
中使用,但不能在IE11
中使用。
我也可以使用像$input_file.val('').end();
之类的JQuery来做这件事,但是因为我试图在history.back()
之后不能确定为什么这样做。
<script>
alert("Error");
window.history.back();
$('input[id="Attachment"]').val('').end();
</script>
欢迎任何关于如何实现这一目标的其他想法。
答案 0 :(得分:1)
有一个名为 pageShow 的触发器,在转换动画完成时会被触发。
jQuery( ".selector" ).on( "pageshow", function( event ) { ... } )
在您的情况下,您需要执行以下操作
<script>
alert("Error");
window.history.back();
$(window).bind("pageshow", function() {
//debugger; you can check and see if this block of code gets triggered
$('input[id="Attachment"]').val('').end();
});
</script>
注意:自jQuery Mobile 1.4.0起,不推荐触发此事件。它将不再在1.6.0中触发。 pageshow的替换是pagecontainer小部件的pagecontainershow事件。在jQuery Mobile 1.4.0中,这两个事件是相同的,除了它们的名称和pagecontainer是在pagecontainer上触发的事实,而pageshow是在页面上触发的。