这里有一个非常相似的问题,但我正在做一些不同的问题。就我而言,在提交表单时,如果某事失败,我正在执行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>
欢迎其他关于如何完成此操作的想法。
有一个称为 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 Widget的PageContainershow事件。在jQuery Mobile 1.4.0中,这两个事件是相同的,除了它们的名称以及PageContainershow在PageContainer上触发的事实,而页面上则触发了页面。
。
jQuery对事件的引用
示例