在MVC 4和浏览器后退按钮的视图中禁用Backspace

时间:2016-02-11 10:11:31

标签: javascript jquery asp.net-mvc-4 view

我想创建一个页面(在这种情况下是view),如果按下退格键,它将显示错误。

这是我对退格键的尝试:

<script type ="text/javascript">
$(document).ready(function (event) {
    if (event.keycode == 8) {
        alert("Don't go back");
        window.history.back(0);
    }
});

</script>

它不起作用,

另外,我想抓住浏览器后退按钮,以便我可以禁用返回页面。

任何替代方案都会被接受,因为它会节省我的一天。

提前致谢。

2 个答案:

答案 0 :(得分:1)

您通常无法(浏览器安全限制)。您可以判断用户是否离开了页面(onbeforeunload,onunload fire),但除非您已将页面设置为允许,否则无法告诉他们去哪里。

HTML5引入了HTML5 History API;在符合浏览器的情况下,onpopstate事件将在用户导航回更早的&#34;页面时触发。在您的网站上。

Protected Overrides Sub WndProc(ByRef message As Message)
    If message.Msg = &H84 Then 'WM_NCHITTEST
        message.Result = CType(1, IntPtr)
        Return
    End If
    MyBase.WndProc(message)
End Sub

答案 1 :(得分:0)

将其绑定在关键事件

    $(document).unbind('keydown').bind('keydown', function (event) {
    var doPrevent = false;
    if (event.keyCode === 8) {
        var d = event.srcElement || event.target;
        if ((d.tagName.toUpperCase() === 'INPUT' && 
             (
                 d.type.toUpperCase() === 'TEXT' ||
                 d.type.toUpperCase() === 'PASSWORD' || 
                 d.type.toUpperCase() === 'FILE' || 
                 d.type.toUpperCase() === 'SEARCH' || 
                 d.type.toUpperCase() === 'EMAIL' || 
                 d.type.toUpperCase() === 'NUMBER' || 
                 d.type.toUpperCase() === 'DATE' )
             ) || 
             d.tagName.toUpperCase() === 'TEXTAREA') {
            doPrevent = d.readOnly || d.disabled;
        }
        else {
            doPrevent = true;
        }
    }

    if (doPrevent) {
        event.preventDefault();
    }
});