Как очистить входной файл и ввести текстовые значения в history.back ()

Здесь есть довольно похожий вопрос здесь, но я ' м занимаюсь чем-то другим. В моем случае при отправке формы, если что-то не получается, я использую history.back (), чтобы сохранить все значения в форме, но в случае входных файлов имя файла остается там, но на самом деле файла там нет. Поэтому, чтобы избежать путаницы и сообщить пользователю, что ему нужно снова загрузить файл, я хочу очистить значение только этого элемента и другого входного текста, который имеет описание файла.

Добавление к нему атрибута autocomplete="off" дает трюк, поскольку не позволяет браузеру кэшировать это значение, но это работает в Chrome, но не в IE11.

Я также могу сделать это с помощью JQuery, например $input_file.val('').end();, но поскольку я пытаюсь сделать это после того, как history.back() не работает, не знаю, почему.

<script>
      alert("Error");
      window.history.back();
      $('input[id="Attachment"]').val('').end();
</script>

Любые другие идеи о том, как это сделать, приветствуются.


person Somebody    schedule 03.04.2018    source источник
comment
Наверное, захочется попробовать это - заголовок stackoverflow.com/questions/8861181/   -  person user2884707bond    schedule 03.04.2018
comment
@ user2884707bond, который сделал свое дело! Пожалуйста, добавьте ответ, чтобы я мог отдать вам должное.   -  person Somebody    schedule 03.04.2018


Ответы (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 является событие pagecontainershow виджета pagecontainer. В jQuery Mobile 1.4.0 два события идентичны, за исключением их имени и того факта, что pagecontainershow запускается в pagecontainer, тогда как pageshow запускается на странице.

jQuery Ссылка на событие

примеры

person user2884707bond    schedule 03.04.2018