Jquery 如何避免在输入中按enter键后重新加载asp页面

Jquery 如何避免在输入中按enter键后重新加载asp页面,jquery,asp.net,input,Jquery,Asp.net,Input,我尝试在输入字段(实际上是条形码输入)中捕捉Enter键以取消隐藏按钮。这是我们的工作流程:首先输入一个数字,然后显示一些按钮继续。看起来很简单,但我就是没法用。按Enter键时,页面似乎再次加载,这在firebug中可见。按钮在很短的时间内可见,重新加载会将其重新初始化为隐藏状态 这是我的代码: <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder_Head" runat="Server"> <

我尝试在输入字段(实际上是条形码输入)中捕捉Enter键以取消隐藏按钮。这是我们的工作流程:首先输入一个数字,然后显示一些按钮继续。看起来很简单,但我就是没法用。按Enter键时,页面似乎再次加载,这在firebug中可见。按钮在很短的时间内可见,重新加载会将其重新初始化为隐藏状态

这是我的代码:

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder_Head" runat="Server">
<script>
    $(document).ready(function () {
        // initialize with invisible borders
        _Quant_notQuali = null;
        QuantQuali_SetBorders();
        $('div#quantqual').hide();
        $('input#barcode').val('');
        $('input#barcode').keyup(function (e) {
            e.preventDefault();
            if (e.keyCode === 13) {
                $('div#quantqual').show();
            }
            return false;
        });
        return;
    });
</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder_Body" runat="Server">
<div>
    Barcode:
    <input id="barcode" type="text" style="font-size: larger;" />
</div>
<div id="quantqual">
    <div class="button" id="quant" onclick="_Quant_notQuali = true; QuantQuali_SetBorders();">Kwantitatief</div>
    <div class="button" id="quali" onclick="_Quant_notQuali = false; QuantQuali_SetBorders();">Kwalitatief</div>
</div>

$(文档).ready(函数(){
//用不可见的边框初始化
_Quant_notQuali=null;
定量定量;
$('div#quantqual').hide();
$(‘输入#条形码’).val(“”);
$(‘输入#条形码’).keyup(函数(e){
e、 预防默认值();
如果(如keyCode===13){
$('div#quantqual').show();
}
返回false;
});
返回;
});
条形码:
夸塔蒂夫
夸利塔蒂耶夫
为什么在按下/按下Enter键后重新加载页面?或者在
show()之后

这可能是因为与ASP系统的交互?(或者母版页?)input
元素没有
runat=server
,因为数据稍后将通过一些ajax调用发送到服务器

我完全不知所措……

试试这个:

$('input#barcode').keyup(function (e) {
 e.preventDefault();
            if (e.keyCode == 13) {
                //Add this
                e.returnValue=false;
                e.cancel = true;

                $('div#quantqual').show();
                return false;
            }

        });

我发现它时遇到了类似的问题。睡个好觉有什么帮助:-)

首先,提交不是由
元素引起的,因为没有元素。提交是由ASP页面的
元素中的
操作
属性引起的。我用这个简单的html页面对此进行了测试:

<html>
<head>
</head>
<body>
    <form action="page.aspx">
        <div>
            Barcode: <input id="barcode" type="text" />
        </div>
    </form>
</body>
</html>

页面上有提交按钮吗?没有,但ASP系统可能会插入一个?我没有写一个,在FireBug中我没有看到一个,但毕竟ASP页面是一个表单。尝试了这个,没有帮助:-(尝试向
输入#barcode
添加一个.change()事件处理程序,参数表示DOM事件。在那里添加一个preventDefault()。这将在执行
val(“”)之前进行)
值更改。作为测试,将
keyup()
处理程序回调中的代码替换为just
return false;
并查看是否仍刷新。我尝试了这两种建议,但都没有帮助。仍在重新加载。您可能需要检查
QuantQuali\u setboorders();
并确定它是否设置了某种类型的事件处理程序。此外,正如您在问题中提到的,母版页或父模板是否有处理程序。这些处理程序可能需要
返回false;
preventDefault()
/
stopPropogation()
已应用。母版页非常空,只有一个
asp:LoginView
控件。此外,查看视图源代码或Firebug,我应该可以看到页面的所有html,并且视图中没有提交。但是我同意asp可能需要提交的地方您可以发布更多的html吗?我编辑了我的解决方案,请尝试。当您进行比较时可能不计算类型,只检查它是否相等。怀疑这是问题所在,但可能是。不起作用:-(现在必须回家,明天我将在常规html非asp页面中尝试JS。谢谢。
<html>
<head>
</head>
<body>
    <form action="page.aspx">
        <div>
            Barcode: <input id="barcode" type="text" />
        </div>
    </form>
</body>
</html>
    $(document).ready(function () {
        ...
        // prevent Submit when pressing Enter key
        $(window).keydown(function (e) {
            if (e.keyCode == 13) {
                e.preventDefault();
                return false;
            }
        });