如何在history.back()上清除输入文件和输入文本值



这里有一个非常相似的问题,但我正在做一些不同的问题。就我而言,在提交表单时,如果某事失败,我正在执行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对事件的引用

示例

最新更新