1

在我的纯 HTML 页面中,我有一个文本框供用户输入关键字,然后重定向到 asp 页面。当用户单击提交按钮时,我使用 javascript 来捕获关键字。

但是当用户按下回车时,HTML 页面将重新加载并返回错误页面。我如何捕获输入键事件?这样它就会重定向到asp页面。谢谢

我的javascript代码如下:

function searching() {            
            var keywordsStr = document.getElementById('keywords').value;
            var cmd = "http://xxx/SearchEngine/Searching.aspx?keywords=" + encodeURI(keywordsStr) ;
            window.open(cmd);
        }

我的html代码如下:

   <form name="form1" method="post" action="" >
     <input name="keywords" type="text" id="keywords" size="50" >
     <input type="submit" name="btn_search" id="btn_search" value="Search" onClick="javascript:searching(); return false;">
     <input type="reset" name="btn_reset" id="btn_reset" value="Reset">
   </form>
4

3 回答 3

2

如果您愿意使用jquery,

你可以做类似的事情,

$("#keywords").keyup(function(e){
   if(e.keyCode == '13')
   {
       //enter key
   }
});
于 2012-09-28T08:15:28.423 回答
0

为什么不在新窗口中打开表单的结果?
我更喜欢使用帖子:

<form action="http://xxx/SearchEngine/Searching.aspx" method="post" target="_blank">

但是您可以使用 get 调用,就像您在代码段中所做的那样

<form action="http://xxx/SearchEngine/Searching.aspx" method="get" target="_blank">



如果您真的想检测回车键 .. 在您的情况下,我建议您对整个页面使用 onkeydown 事件,以防止触发与回车键关联的事件(例如提交您的表单),方法是:

document.onkeydown = checkKeycode
function checkKeycode(e) 
{
    var keycode;
    if (window.event) keycode = window.event.keyCode;
    else if (e) keycode = e.which;
    // alert("keycode: " + keycode);
    if (keycode == 13)
    {
        alert('enter key is pressed: now do something');
    }
}
于 2012-09-28T08:20:50.900 回答
0

您的“动作”属性为空,这意味着 HTML 页面将发布到自身(基本上是重新加载)。您需要将 ASP 页面的 URL 放在那里才能发布数据。

 <form name="form1" method="get" action="http://xxx/SearchEngine/Searching.aspx">
     <input name="keywords" type="text" size="50" >
     <input type="submit" name="btn_search" value="Search">
     <input type="reset" name="btn_reset" value="Reset">
 </form>

并且您可能希望将方法更改method="get"为模仿您的 javascript 函数。如果您希望提交创建一个新窗口,您可以在表单中添加一个目标属性:

target="_blank"
于 2012-09-28T08:23:06.440 回答