Модераторы: Illuminaty
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> input type="text', Реагирование на нажатие клавиши enter. 
:(
    Опции темы
armivl
Дата 7.9.2010, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 3.10.2008

Репутация: нет
Всего: нет



Ситуация. На Web форме asp.net 2.0 имеем несколько текствых полей и несколько кнопок для выполнения действий вообще не связанных с текстовыми полями. При установке фокуса на текстовом поле и нажатии клавиши enter происходит потеря текстовым полем фокуса, активируется начальная кнопка на форме и происходит отправка страницы на сервер. При этом не обязательно, что начальная кнопка имеет тип submit. Т.е автоматически происходит тоже, если бы я с помощью клавишы tab перешел на активирующуюся автоматически кнопку и нажал клавишу enter.


Вопрос. Что можно сделать для того, чтобы при нажатии клавиши еnter из текстового поля фокус оставался бы на текстовом поле и активации кнопки не происходило.
Возможно ли это решить с помощью свойств DOM, либо CSS.

P.S Пробовал  со скриптами. вариант типа onkeydown="if(event.keyCode==13)return false;" работает в основых браузерах, кроме Mozilla. Вот в этом и проблема. В Mozilla вообще не работает отмена события нажатия клавиши кроме onkeydown="return false;".

Пока решил проблему путем добавления в начало формы кнопки type="submit" с onclick="return false;".  Но при нажатии все-равно происходит потеря текстовым полем фокуса. 

 

Это сообщение отредактировал(а) armivl - 7.9.2010, 11:20
PM MAIL   Вверх
CruorVult
Дата 7.9.2010, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

Репутация: 1
Всего: 28



Я так понял нужно чтобы форма сабмитилась только при нажатии кнопки. тогда:
Код

<form...>
....
<input type="button" onclick="this.form.submit()">
</form>


PM MAIL Skype   Вверх
armivl
Дата 7.9.2010, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 3.10.2008

Репутация: нет
Всего: нет





<html>
<head>

</head>

<body>

<p>Testing input1.<br>
    <input type="text" name="txtEnterValue"> </p>
<p>Testing input2.<br>
    <input type="text" name="txtOutput"> </p>

<input type="image" id="im" onclick="alert('opps i am is clicked');">

</body>
</html>

открой этот html в браузере выдели любое текстовое поле и нажми enter. 
поле теряет фокус и выполняется событие input-а "image". Я хочу этого избежать. 
PM MAIL   Вверх
CruorVult
Дата 7.9.2010, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

Репутация: 1
Всего: 28



Код

<html>
<head>

</head>

<body>

<p>Testing input1.<br>
    <input id="inp1" type="text" name="txtEnterValue" onfocus="remember(this.id)"> </p>
<p>Testing input2.<br>
    <input id="inp2" type="text" name="txtOutput" onfocus="remember(this.id)"> </p>

<input type="image" id="im" onclick="alert('opps i am is clicked'); focusAgain()">
<div id="t"></div>
<script>
var focus;
function remember(id) {
    focus = id;    
}
function focusAgain() {
    document.getElementById(focus).focus();
}
</script>
</body>
</html>

PM MAIL Skype   Вверх
ksnk
Дата 7.9.2010, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



CruorVult
Цитата(armivl @  7.9.2010,  09:34 Найти цитируемый пост)
Что можно сделать для того, чтобы при нажатии клавиши еnter из текстового поля фокус оставался бы на текстовом поле и активации кнопки не происходило.


Код

if(event.keyCode==13){
  if(event.preventDefault) 
    event.preventDefault();
  return false;
}
 
что-то вроде такого должно помочь.

еще можно поковырять - посмотреть в гугле такие варианты
Код

            evt.cancelBubble = true; // просачивание события
            if (evt.stopPropagation) evt.stopPropagation();  // просачивание события
            if(evt.preventDefault) evt.preventDefault(); // дефолтное значение 

            evt.returnValue = false;  // отмена действия

            return false; // отмена действия


или посмотреть здешнюю статейку "все о событиях"



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
CruorVult
Дата 7.9.2010, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

Репутация: 1
Всего: 28



Цитата(ksnk @  7.9.2010,  12:51 Найти цитируемый пост)
Что можно сделать для того, чтобы при нажатии клавиши еnter из текстового поля фокус оставался бы на текстовом поле и активации кнопки не происходило.

так фокус никуда и не денется если поставить вместо type="submit" type="button"
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Вёрстка веб-сайтов | Следующая тема »


 




[ Время генерации скрипта: 0.0941 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.