最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Reset form on Back button - Stack Overflow

programmeradmin13浏览0评论

Trying to find an elegant solution to reset a webform (or more specifically two INPUT Type='hidden' fields) if a user goes BACK after the form is submitted.

I understand that BACK button does not trigger an onload event.

But is there any way of dealing with this?

Trying to find an elegant solution to reset a webform (or more specifically two INPUT Type='hidden' fields) if a user goes BACK after the form is submitted.

I understand that BACK button does not trigger an onload event.

But is there any way of dealing with this?

Share Improve this question asked Dec 15, 2011 at 10:34 Uno Mein AmeUno Mein Ame 1,0906 gold badges16 silver badges30 bronze badges 3
  • You can use cookies with javascript to mark that the user have been on this page before, or whether he have filled the form before – Teneff Commented Dec 15, 2011 at 10:41
  • can you please suggest the code, i'm not really familiar with cookies – Uno Mein Ame Commented Dec 15, 2011 at 10:45
  • People usually do not want this. It's extremely annoying especially when ing back from an error page. – ThiefMaster Commented Dec 15, 2011 at 10:52
Add a ment  | 

3 Answers 3

Reset to default 7

when the back button is pressed, onbeforeunload event is fired so you can try something like

jQuery:

$('#form_id').submit(function(){
$(window).unload(function () {
$('input[type="hidden"]').val("reset_value"); 
}
});

javascript:

<form onsubmit="call_function();">

in between script tag:

function call_function(){

window.onbeforeunload = function(){
var input_elems = document.getElementByTagName('input');
for(var i=0;i<input_elems.length;i++){
     if(input_elems[i].type === 'hidden'){
         input_elems[i].innerHTML = "reset_value";
     }
   }
}

You could prevent the default submit from fireing, ajax-post the form, then unset the unwanted fields and change the location to a new page. Isnt really nice, but should do the trick.

For IE 8 or less you can reset the form : document.getElementById('formname').reset();

For IE 9, Firefox, Chrome you can reset just the fields you want by using: elementNodeHere.value = elementNodeHere.getAttribute('value');

Don't bother with jquery, .attr('value') returns the new value not the original

(getAttribute in IE 7 returns the new value only and in IE 8 it can return NULL)

发布评论

评论列表(0)

  1. 暂无评论