2014-04-17 39 views
0

我有一个表单,它包含输入字段,gridview和buttons.I要警告用户在从Form导航时丢失数据。在Firefox(5)中,Chrome可以正常工作,但即它不。在这里我给我的剧本window.onbeforeunload不能在IE中工作

<script type="text/javascript"> 

    function setConfirmUnload(on) { 

     window.onbeforeunload = (on) ? unloadMessage : null; 

    } 
    function unloadMessage() { 

     return 'You have entered new data on this page.' + 
    ' If you navigate away from this page without' + 
    ' first saving your data, the changes will be' + 
    ' lost.'; 
    } 
    $(document).ready(function() { 

     $(':input', document.aspnetForm).bind(
     "change", function() { 
     setConfirmUnload(true); 
    } 
     ); // Prevent accidental navigation away 
    }); 
</script> 

在提交按钮,我宣布OnClientClick="setConfirmUnload(true);"

任何人都可以有任何想法,这个。请帮我

感谢

+0

我剥出了jQuery'ready'功能,只是叫'setConfirmUnload(真)'内页和它的工作正常。我的猜测是a)你有一个在'IE'下触发的错误,而不是'Chrome'或者有'HTML'布局错误,这意味着你的'selector'不工作。把'console.log'放在ready语句中,并跟踪那里发生的事情。 –

+0

Thinks很多..但我的页面包含很多gridviews添加按钮。如果我按照你的做法,在GridView的分页也显示警报框。如何停止这种警报在分页。和在GridView的下一页如果我正在做任何更改警报不会来。是否有任何解决方案? – Madhu

+1

您尚未提供足够的信息。我/我们不知道你的HTML是什么样的。我唯一能做的就是我所做的 - 指出问题的最可能来源,以帮助您缩小范围。 –

回答

-1

做到这一点 -

OnClientClick="return setConfirmUnload(true);" 
+0

'setConfirmUnload()'不返回任何东西,那么用'return'使用它有什么意义? – Barmar

+0

这是来自官方微软网站-http://samples.msdn.microsoft.com/workshop/samples/author/dhtml/refs/onbeforeunload.htm – Hrishi

+0

也许它假定该函数实际返回的东西。或者,也许你需要建议他改变函数来返回一些东西。 – Barmar