Не срабатывает событие JS при нажатии Enter в поле формы

qwr938

Постоялец
Регистрация
13 Авг 2008
Сообщения
60
Реакции
1
Код формы:
PHP:
<form action="search.php" method="post" name="search_form">
<input type="text" name="search" size="60" maxlength="255" id="id_search" class="search_text">
<input type="submit" name="submit" value="Поиск" onclick="return my_search();" class="search_submit">
</form>
JavaScript:
PHP:
<script language="javascript">
function my_search()
{var search = document.getElementById('id_search');
if(search.value.length == 0 || search.value.replace(/ /gi,"").length<2)
{alert ("Введите не менее двух символов."); search.focus(); return false;} return true;};
</script>
Если в поле формы ввести менее двух символов (без учёта пробелов) и нажать на кнопку Поиск или Enter на клавиатуре, то выскочит предупреждение "Введите не менее двух символов". Если ввести от двух символов и более, то пользователя перебросит на страницу search.php и скрипт начнёт обрабатывать то, что попало в переменную $search.

Во всех браузерах данный код работает. Но в IE при нажатии на клавишу Enter функция my_search() не срабатывает, а при нажатии на кнопку Поиск всё работает нормально.
 
лучше обрабатывать отправку данных в форме onsubmit, а не нажатие на кнопке
HTML:
<form action="search.php" method="post" name="search_form" id="search_form" onSubmit="return my_search();" >
<input type="text" name="search" size="60" maxlength="255" id="id_search" class="search_text">
<input type="submit" name="submit" value="Поиск" class="search_submit">
</form> 

<script language="javascript">
function my_search(){
    var search = document.getElementById('id_search');
    if(search.value.length == 0 || search.value.replace(/ /gi,"").length<2){
        alert ("Введите не менее двух символов."); 
        search.focus(); 
        return false;
    } 
    return true;
};

//или удалить onSubmit="return my_search();"  и добавить
//document.getElementById('search_form').onsubmit = my_search;
</script>
 
Спасибо, заработало. Только есть одна небольшая опечатка в коде: последний return false нужно заменить на return true.
 
Назад
Сверху