如何在history.back()

时间:2018-04-03 15:28:43

标签: javascript jquery back

有一个非常相似的问题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>

欢迎任何关于如何实现这一目标的其他想法。

1 个答案:

答案 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是在页面上触发的。

jQuery Reference to the event

examples

相关问题