检查是否在文本框中按下了输入键

时间:2014-06-10 10:25:15

标签: javascript jquery html

我正在使用以下代码来检查是否在文本框中按了回车键但我得到了 类型错误 TypeError:e未定义

<html lang="en">
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8">
        <title>demo</title>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
        <script>
function memSort(e){        
        if(e.keyCode === 13){
            alert("Enter was pressed ");
        }       
}
</script>
    </head>
    <body>  
        <div class="searchBox">
            <div class="keyname">Keyword : </div>          
            <input name="usersearch" id="usersearch" type="text" value="" onKeydown="memSort();"/>
            <div id="listOrders"></div>
        </div>
    </body>
</html>

4 个答案:

答案 0 :(得分:4)

您需要在调用JavaScript函数时传递event对象,如下所示:

<input name="usersearch" id="usersearch" type="text" value="" onKeydown="memSort(event);"/>

在jQuery中很简单,无需从输入调用:

$('#usersearch').keydown(function(e){
    if(e.keyCode === 13){
            alert("Enter was pressed ");
     }  
});

答案 1 :(得分:1)

我看到你在代码中使用了jQuery。那么为什么不利用相同的东西进行不引人注目的事件处理。

$("usersearch").on("keydown", function(e) {
    if(e.keyCode === 13){
    ...
    }
});

或者如果只是使用Javascript,则传递事件对象参数:

onkeypress="memSort(event);"

但是,应该避免使用内联处理程序。

答案 2 :(得分:1)

试试这个

<input name="usersearch" id="usersearch" type="text" value="" onkeypress="memSort(event);"/>

function memSort(e){
 var key=e.keyCode || e.which;
  if (key==13){
     alert("Enter was pressed ");
  }
}

答案 3 :(得分:1)

调用函数时,必须传递event对象。

试试这个:

HTML代码

<div class="searchBox">
    <div class="keyname">Keyword : </div>          
    <input name="usersearch" id="usersearch" type="text" value="" onKeydown="memSort(event);"/>
    <div id="listOrders"></div>
</div>

Working Fiddle

“TypeError:e未定义” - 说明:

请注意html代码:onKeydown =“memSort(event); 在这里,我将事件对象event作为函数参数传递。但是在你的代码中你错过了这个。当你没有传递参数时,它引用为undefined。 (如果你没有通过该事件,那么你将无法获得e.keyCode。)因此,你必须传递事件对象。