2010-07-30 72 views
1

嘿傢伙,我有一個搜索字段,當輸入密鑰被擊中時沒有提交,這個問題只發生在IE8上,其他瀏覽器都工作得很好(甚至IE6)。請大家,我需要他的一隻手,找到我的代碼下面。IE8 - 輸入密鑰將不會提交我的搜索字段

<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編碼的頁面,這就是爲什麼它是不是表單元素裏面包裹着。

+1

你可以繼續並從onclick處理程序中刪除'javascript:',它在那裏完全沒用。 – 2010-07-30 14:10:14

回答

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事件並檢查它是否是輸入鍵。

希望這會有所幫助。

+0

這工作完美。謝謝!!! – Ozzy 2010-07-30 14:25:00

+0

可能不應該有onclick和onsubmit – Znarkus 2010-07-30 14:42:07

+0

更好。現在他們可以按回車鍵或點擊按鈕。 – 2010-07-30 14:56:58

0

這是否與你有一個onclick事件和GoSearchreturn false附加到'submit'輸入類型的函數有關?

你可以過去goSearch()函數的內容嗎?

0

如果刪除「返回false」,會發生什麼情況?從提交的事件處理程序? 當用戶在文本輸入字段中輸入ENTER時,IE的行爲就像提交按鈕已被使用,但「false」可防止事件冒泡。

編輯:與新的ASP信息。

看到這個:http://mikepope.com/blog/AddComment.aspx?blogid=309他擁有的是如何在這裏工作這麼沒有細節,只是說,所有你需要做的是以下內容添加到您的Page_Load事件的解釋:

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

以及我從代碼中移除了返回false,但ie8仍然有相同的問題。 – Ozzy 2010-07-30 14:10:48

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屬性。

+0

並傳遞表單:onsubmit =「return goSearch(this)」,如果成功則在腳本末尾返回false,如果您希望將表單提交給服務器,則返回true – mplungjan 2010-07-30 14:34:30

+0

成功時返回false稍微向後一點。那麼我寧願'返回!goSearch(this)'和'return true'成功。 – Znarkus 2010-07-30 14:39:24

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表單。

0

舊票,但我想幫腔:IE8做以下奇怪的事情:回車鍵將提交表單,但是任何

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

不會在POST發送。

IE9更改行爲併發送該值。就我的測試顯示,Chrome始終發送該值。

有很多「輸入不提交IE8」的投訴,我覺得其中有很多可以促成這種行爲。我希望這有助於他們中的一些人。