IE8 - ключ ввода не отправит мое поле поиска - PullRequest
1 голос
/ 30 июля 2010

Эй, ребята, у меня есть поле поиска, которое не отправляется при нажатии клавиши ввода, эта проблема возникает только в 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 ]

4 голосов
/ 30 июля 2010

Вам нужно поместить несколько <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 голос
/ 30 июля 2010

Я обнаружил, что в 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.

1 голос
/ 30 июля 2010

Другой способ вместо 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>

Редактировать: Добавлены атрибуты действий и методов. Атрибут действия необходим для проверки.

0 голосов
/ 24 сентября 2012

Старый тикет, но я бы хотел присоединиться: IE8 выполняет следующую особенную вещь: клавиша Enter отправит форму, но любая

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

не будет отправлено в POST.

IE9 меняет поведение и отправляет значение. Chrome всегда отправлял значение, насколько показали мои тесты.

Существует масса жалоб "Ввод не отправляется в IE8", и я чувствую, что многие из них могут быть внесены в это поведение. Я надеюсь, что это поможет некоторым из них.

0 голосов
/ 30 июля 2010

Что произойдет, если вы удалите «return false»; из обработчика событий для отправки? Когда пользователь нажимает клавишу ВВОД в поле ввода текста, IE ведет себя так, как если бы использовалась кнопка отправки, но «ложь» предотвращает всплывание события.

РЕДАКТИРОВАТЬ: с новой информацией ASP.

См. Это: http://mikepope.com/blog/AddComment.aspx?blogid=309 У него есть объяснение того, как это работает, поэтому здесь нет подробностей, за исключением того, что все, что вам нужно сделать, это добавить следующее к вашему событию page_load:

Page.RegisterHiddenField("__EVENTTARGET", "MyDefaultButton");
0 голосов
/ 30 июля 2010

Связано ли это с тем, что у вас есть событие onclick с вызовом функции GoSearch и return false, подключенным к типу ввода 'submit'?

Можете ли вы пройтисодержимое функции goSearch ()?

...