时间:2010-07-30 13:51:13

标签: 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-search">Enter keyword(s)</label>
                <input type="submit" value="" name="btn-submit" class="btn-go" onclick="javascript:goSearch();return false;" />
</div>

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

6 个答案:

答案 0 :(得分:4)

您需要在文本框和按钮周围添加一些<form></form>标记。像这样

<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事件并检查它是否是回车键。

希望这有帮助。

答案 1 :(得分:1)

另一种方法是,而不是提交按钮上的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属性。

答案 2 :(得分:1)

我发现IE8中存在错误,有时表单不会在回车键上提交。

最好的方法是设置一个事件来处理被按下的状态。

在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表单,请忽略表单标记。

答案 3 :(得分:0)

答案 4 :(得分:0)

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

编辑:使用新的ASP信息。

请参阅:http://mikepope.com/blog/AddComment.aspx?blogid=309他解释了它是如何工作的,所以这里没有详细说明,除了说你需要做的就是在page_load事件中添加以下内容:

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

答案 5 :(得分:0)

旧票,但我想插入:IE8做了以下特殊事情:Enter键将提交表单,但任何

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

不会在POST中发送。

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

有很多“在IE8中输入不提交”的投诉,我觉得很多可以对这种行为做出贡献。我希望这有助于其中一些。