【问题标题】:How to prevent reload when enter key was pressed?按下回车键时如何防止重新加载?
【发布时间】:2018-02-15 13:29:14
【问题描述】:

我正在使用 ASP.NET + C# + Javascript 开发一个应用程序,并且我正在使用条形码扫描仪来读取标签中的条形码。

此扫描仪在完成阅读时会自动“回车”,但在我的应用程序中,每次按回车键时,页面都会重新加载并返回主视图。

我有一个禁用回车键的功能,但我需要在特定页面中使用触发器,当扫描仪完成或按下回车时,调用 Button_Click 事件。

这是我禁用回车键的功能:

<%--Script Disable Key Enter--%>
<script type="text/javascript">
    $(document).ready(function () {
        $('input').keypress(function (e) {
            var code = null;
            code = (e.keyCode ? e.keyCode : e.which);
            return (code == 13) ? false : true;
        });
    });
</script>
<%--end function--%>

请记住,我正在使用扫描仪读取条形码,读取后,它“按下”回车键,我需要使用此事件“按下”来调用另一个函数,即 Button_Click。


有可能重复,但另一个问题不能解决我的问题。 尝试使用此代码后:

<script type="text/javascript">
    $(function () {
        $("#<%=SSCC_barcodeReader.ClientID%>").keypress(function () {
            $("#<%=BarCodeReader.ClientID%>").click();
        });
    });
</script>
<script type="text/javascript">
    $(document).on("keypress", 'form', function (e) {
        var code = e.keyCode || e.which;
        if (code == 13) {
            e.preventDefault();
            return false;
        }
    });
</script>

按键盘任意键后页面仍然提交。 然后我为我的问题开发了一个解决方案太简单了。

<script type="text/javascript">
    $(function () {
        $("#<%=SSCC_barcodeReader.ClientID%>").keypress(function (e) {
            var code = e.keyCode || e.which;
            if (code == 13) {
                setTimeout(function () {
                    $("#<%=BarCodeReader.ClientID%>").click();
                }, 500)
                clearTimeout(setTimeout);
            }
        })
    });
</script>

<script type="text/javascript">
    $(document).on("keypress", 'form', function (e) {
        var code = e.keyCode || e.which;
        if (code == 13) {
            e.preventDefault();
            return false;
        }
    });
</script>

第一部分我在我的 TextBox 中获得了 keypress 事件,然后我验证按下的键是否是 ENTER 并在 500 毫秒后执行 .click,因为我的扫描仪会在完成输入之前发送确认。

第二部分是防止返回初始页面。

【问题讨论】:

  • 这不是默认行为,所以我猜你这里有其他代码干扰。请为您的问题创建一个Minimal, Complete, and Verifiable example
  • 请分享一个完整的例子,代码等来帮助你:-)。
  • 将事件绑定到您的表单提交并阻止默认操作,这样您就可以在不重新加载页面的情况下做您想做的事情
  • @MikeMcCaughan 我看过这篇文章,但没有解决我的问题。因为这个我创建了一个新的。

标签: javascript asp.net


【解决方案1】:

我用两个函数解决了我的问题。 现在我的应用程序非常有用。

<script type="text/javascript">
    $(function () {
        $("#<%=SSCC_barcodeReader.ClientID%>").keypress(function () {
            $("#<%=BarCodeReader.ClientID%>").click();
        });
    });
</script>
<script type="text/javascript">
    $(document).on("keypress", 'form', function (e) {
        var code = e.keyCode || e.which;
        if (code == 13) {
            e.preventDefault();
            return false;
        }
    });
</script>

【讨论】:

    【解决方案2】:

    下面是我的代码,可以防止在输入键时加载页面

    <script type="text/javascript">
    $(document).on("keypress", 'form', function (e) {
        var code = e.keyCode || e.which;
        if (code == 13) {
            e.preventDefault();
            return false;
        }
    });
    

    【讨论】:

    • 这与 OP 的问题中的代码完全相同(见最后部分)。
    猜你喜欢
    • 2012-08-07
    • 2016-12-19
    • 1970-01-01
    • 1970-01-01
    • 2021-05-14
    • 2020-09-15
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多