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

Тема в разделе "Другие языки", создана пользователем qwr938, 26 янв 2011.

Модераторы: Цукер
  1. qwr938

    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 == || search.value.replace(/ /gi,"").length<2)
    {
    alert ("Введите не менее двух символов."); search.focus(); return false;} return true;};
    </script>
    Если в поле формы ввести менее двух символов (без учёта пробелов) и нажать на кнопку Поиск или Enter на клавиатуре, то выскочит предупреждение "Введите не менее двух символов". Если ввести от двух символов и более, то пользователя перебросит на страницу search.php и скрипт начнёт обрабатывать то, что попало в переменную $search.

    Во всех браузерах данный код работает. Но в IE при нажатии на клавишу Enter функция my_search() не срабатывает, а при нажатии на кнопку Поиск всё работает нормально.
     
  2. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    лучше обрабатывать отправку данных в форме 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> 
    
     
    qwr938 нравится это.
  3. qwr938

    qwr938 Постоялец

    Регистр.:
    13 авг 2008
    Сообщения:
    60
    Симпатии:
    1
    Спасибо, заработало. Только есть одна небольшая опечатка в коде: последний return false нужно заменить на return true.