Javascript IE8-输入key-won';不要提交我的搜索字段

Javascript IE8-输入key-won';不要提交我的搜索字段,javascript,html,css,internet-explorer-8,cross-browser,Javascript,Html,Css,Internet Explorer 8,Cross Browser,嘿,伙计们,我有一个搜索字段,当按下回车键时,它不会提交,这个问题只发生在IE8上,其他浏览器都可以正常工作(即使是IE6)。伙计们,我需要他的帮助,在下面找到我的代码 <div class="box-search"> <input type="text" class="text-box" id="text-search" /> <label class="overlabel" for="text-se

嘿,伙计们,我有一个搜索字段,当按下回车键时,它不会提交,这个问题只发生在IE8上,其他浏览器都可以正常工作(即使是IE6)。伙计们,我需要他的帮助,在下面找到我的代码

<div class="box-search">
                <input type="text" class="text-box" id="text-search" />
                <label class="overlabel" for="text-search">Enter keyword(s)</label>
                <input type="submit" value="" name="btn-submit" class="btn-go" onclick="javascript:goSearch();return false;" />
</div>

输入关键字

好的,我忘了提到这个表单在一个ASP编码的页面中,这就是为什么它没有包装在表单元素中。

这与您有一个
onclick
事件,该事件带有一个对
GoSearch
的函数调用和一个附加到“submit”输入类型的
return false
有关吗


你能通过goSearch()函数的内容吗?

这与你有一个
onclick
事件,该事件带有对
goSearch
的函数调用和一个附加到“submit”输入类型的
return false
有关吗


是否可以跳过goSearch()函数的内容?

您需要在文本框和按钮周围放置一些
标记。像这样

<form method='POST' onsubmit='javascript:goSearch();return false;'> 
            <input type="text" class="text-box" id="text-search" />       
            <label class="overlabel" for="text-search">Enter keyword(s)</label>       
            <input type="button" value="" name="btn-submit" class="btn-go" onclick="javascript:goSearch();return false;" />
</form>

输入关键字
另一种方法是在文本框上使用keydown事件并检查它是否是enter键


希望这有帮助。

您需要在文本框和按钮周围放置一些
标记。像这样

<form method='POST' onsubmit='javascript:goSearch();return false;'> 
            <input type="text" class="text-box" id="text-search" />       
            <label class="overlabel" for="text-search">Enter keyword(s)</label>       
            <input type="button" value="" name="btn-submit" class="btn-go" onclick="javascript:goSearch();return false;" />
</form>

输入关键字
另一种方法是在文本框上使用keydown事件并检查它是否是enter键


希望这有帮助。

如果从提交的事件处理程序中删除“return false;”,会发生什么? 当用户在文本输入字段中点击ENTER时,IE的行为就好像使用了submit按钮,但“false”阻止了事件冒泡

编辑:使用新的ASP信息

请看:他解释了它是如何工作的,所以这里没有任何细节,只是说您需要做的就是将以下内容添加到您的page_load事件中:

Page.RegisterHiddenField("__EVENTTARGET", "MyDefaultButton");

如果从提交的事件处理程序中删除“return false;”,会发生什么? 当用户在文本输入字段中点击ENTER时,IE的行为就好像使用了submit按钮,但“false”阻止了事件冒泡

编辑:使用新的ASP信息

请看:他解释了它是如何工作的,所以这里没有任何细节,只是说您需要做的就是将以下内容添加到您的page_load事件中:

Page.RegisterHiddenField("__EVENTTARGET", "MyDefaultButton");

另一种方法,而不是单击submit按钮上的
onclick
,是这样做

<form action="script.php" method="post" onsubmit="goSearch();return false">
<div class="box-search">
    <input type="text" class="text-box" id="text-search" />
    <label class="overlabel" for="text-search">Enter keyword(s)</label>
    <input type="submit" value="" name="btn-submit" class="btn-go" />
</div>
</form>

输入关键字

编辑:添加了操作和方法属性。验证需要action属性。

另一种方法,而不是单击submit按钮上的
onclick
,是这样做的

<form action="script.php" method="post" onsubmit="goSearch();return false">
<div class="box-search">
    <input type="text" class="text-box" id="text-search" />
    <label class="overlabel" for="text-search">Enter keyword(s)</label>
    <input type="submit" value="" name="btn-submit" class="btn-go" />
</div>
</form>

输入关键字

编辑:添加了操作和方法属性。验证需要action属性。

我发现IE8中有一个bug,有时表单在回车键时无法提交

最好的方法是设置一个事件来处理按下enter键的情况

在jQuery中,您可以执行以下操作:

$("input_box_id").keydown(function(e){

     if (e.keyCode == 13) //enter
     {
         $("btn-submit").click();
     }
});
在JavaScript中,它将是:

document.getElementById("input_box_id").onclick = function(e){

   var keycode =(window.event) ? event.keyCode : e.keyCode;

   if (keycode == 13) //enter
   {
      document.getElementById("input_box_id").click();
   }

};
并将Html更改为:

<form action="url_here" method="post">
<div class="box-search">
    <input type="text" class="text-box" id="text-search" />
    <label class="overlabel" for="text-search">Enter keyword(s)</label>
    <input type="submit" value="" id="btn-submit" name="btn-submit" class="btn-go" />
</div>
</form>

输入关键字

如果您已经拥有Asp.net表单,请忽略表单标记。

我发现IE8中存在一个错误,有时表单无法按enter键提交

最好的方法是设置一个事件来处理按下enter键的情况

在jQuery中,您可以执行以下操作:

$("input_box_id").keydown(function(e){

     if (e.keyCode == 13) //enter
     {
         $("btn-submit").click();
     }
});
在JavaScript中,它将是:

document.getElementById("input_box_id").onclick = function(e){

   var keycode =(window.event) ? event.keyCode : e.keyCode;

   if (keycode == 13) //enter
   {
      document.getElementById("input_box_id").click();
   }

};
并将Html更改为:

<form action="url_here" method="post">
<div class="box-search">
    <input type="text" class="text-box" id="text-search" />
    <label class="overlabel" for="text-search">Enter keyword(s)</label>
    <input type="submit" value="" id="btn-submit" name="btn-submit" class="btn-go" />
</div>
</form>

输入关键字

如果您已经有Asp.net表单,请忽略表单标签。

旧票证,但我想插话:IE8做了以下奇怪的事情:Enter键将提交表单,但任何

<input type="submit" name="MySubmitButton" value="I hope I detect THIS VALUE in POST" />

不会被邮寄的

IE9更改行为并发送值。据我的测试显示,Chrome总是发送值


有一大堆关于“在IE8中输入不提交”的投诉,我觉得其中有很多是导致这种行为的原因。我希望这对他们中的一些人有所帮助。

旧票,但我想插话:IE8做了以下奇怪的事情:回车键将提交表单,但任何

<input type="submit" name="MySubmitButton" value="I hope I detect THIS VALUE in POST" />

不会被邮寄的

IE9更改行为并发送值。据我的测试显示,Chrome总是发送值


有一大堆关于“在IE8中输入不提交”的投诉,我觉得其中有很多是导致这种行为的原因。我希望这对他们中的一些人有所帮助。

你可以继续从onclick处理程序中删除
javascript:
,这完全没有用。你可以继续从onclick处理程序中删除
javascript:
,它在那里完全没有用处。我从代码中删除了return false,但ie8仍然存在相同的问题。我从代码中删除了return false,但ie8仍然存在相同的问题。如果成功,还可以传递表单:onsubmit=“return goSearch(this)”,并在脚本末尾使用return false,如果希望将表单提交到服务器,则返回true成功时返回false似乎有点倒退。那我宁愿
回来!goSearch(this)
在成功时返回true
。并且也传递表单:onsubmit=“return goSearch(this)”,如果成功,则在脚本末尾返回false;如果希望表单在成功时提交到服务器,则返回true似乎有点倒退。那我宁愿
回来!goSearch(this)
在成功时返回true
。可能不应该同时使用onclick和onsubmitIs,这样更好。现在他们可以按enter键或单击按钮。@Znarkus:只调用其中一个(因为
返回false
);当“enter”在IE中发送form.submit()时,它在som中发送btn submit.click()