Недопустить refresh страницы при нажатии Enter

 
0
 
JavaScript
ava
Black | 18.12.2004, 19:31
Проблема вот в чем.

Есть форма, в форме есть поле type=text при вводе данных в это поле, если нажать кнопку Enter, браузер отправит введенные данные на action формы.

Однако, мне надо, чтобы если пользователь нажимал Enter, то нажатие кнопки перехватывалось и я возвращал false, чтобы перезагрузка страницы не происходила, т.е. как будто-бы кпопка Enter и не была нажата...

Всё енто дело реализовал под IE, а вот как сделать, чтобы и Моззила не обновлял страницу, а тоже получал false в ответ на нажатие Enter??? или Моззила всегда обновляет страницу???


<form name action=myscript.php>
<input type=text name="text" value="" onkeydown='E();'>
</form>
Kommentare (15)
ava
EXTR PROGRAMMER | 18.12.2004, 19:39 #

<script>
function E()
{
///код
return [b]false[/b];

}
</script>



<input type=text name="text" value="" onkeydown='[b]return[/b] E();'>


Также есть еще стандартные перехватчики событий
Смотри мануал по методу объекта window.captureEvents(Event.KEYPRESS);
ava
Black | 18.12.2004, 19:51 #
к сожалению не все так просто в этой жизни, я то как и сделал а ничего не выходит все равно страница перезагружается, т.к. у меня в форме даже нет action то Mozilla Firefox перезагружает на ту же страницу....

может можно как-то перехватить отправку формы (каким нить событием) вообщем можно ли как-то добиться того, чтоб не было перезагрузки страницы
ava
guest | 18.12.2004, 20:48 #
window.captureEvents(Event.KEYPRESS); и перехватывает событие, а потом ты назначаешь с помощью функции обработчик
ava
Black | 18.12.2004, 21:39 #
Вот, что я сделал (к сожалению, при нажатии Enter форма отсылается и происходит перезагрузка страницы):


<script language='JavaScript1.2'>
<!--
function E(e){

var n = navigator.appName == 'Netscape' ? e.which : e.keyCode;
if (n == 13)
{
// действия
}
else
{
// действия
}
}
//-->
</script>

<body>
<form name=eee>
<input type=text name=\"text\" value=\"\" onKeydown=\"E(event); return false;\">
</form>


Напоминаю, что речь идет о браузерах на движке Mozilla, в IE все работает OK
ava
Alx | 18.12.2004, 21:56 #
а зачем слэши? и лучше не называть функуию одной буквой...
а return false надо просто поставить в тело функции...
ava
Black | 18.12.2004, 22:02 #
ALEXANDRO
слЭши... просто из PHP кода брал забыл убрать smile
А почему одной не называть???

return false; - и в коде функции не помогает smile все нормально только кнопка Enter выделывается
ava
Alx | 18.12.2004, 22:04 #
Цитата (PHP @ 18.12.2004, 22:02)
А почему одной не называть???

не знаю. так некрасиво :)

блин, я тогда даже не знаю в чём дело... моежт на onsubmit повестить?
ava
Black | 18.12.2004, 22:12 #
Блин уже день сижу с этой проблемой не могу решить, уже даже хочу просить пусть обновляет :-)

Просто это чат (фрейм, где набираются сообщения) и не хотелось бы часто обновлять этот фрейм.

Цитата
может на onsubmit повестить?


Я плохо еще разбираюсь в ЯваСкриптах, объясни как это сделать?? я так понимаю это обработчик отправки формы.
ava
Alx | 19.12.2004, 01:19 #
да, првильн понимаешь.
делаешь так -

<form action="script.php" method="post" onsubmit="return false;">


а можешь поподробнее объяснить насчет чата? мне кажется ты не правильно поступаешь изначально! фрейм где ффод сообщения вообще не должен обновляться. Нужно ставить не сабмит, а передачу данных нульфрейму, где уже происходит запись в файл или базу...
ava
EXTR PROGRAMMER | 19.12.2004, 01:38 #
<script language='JavaScript1.2'>
<!--
function E(e){

var n = navigator.appName == 'Netscape' ? e.which : e.keyCode;
if (n == 13)
{
// действия
}
else
{
// действия
}
return false;
}
//-->
</script>

<body>
<form name=eee>
<input type=text name=\"text\" value=\"\" onKeydown=\"return E(event);\">
</form>


А может у тебя вообще Моззила не держит JS. Попробуй reuturn запихать как я сделал.
ava
Sardar | 19.12.2004, 03:44 #
EXTR PROGRAMMER ну ты и дров наломал :)


PHP-DIRECTOR всегда возвращай false по onSubmit, но если нужно действительно отправитьформу, например по кнопке, то перед этим поставь какой нибудь флаг. По onSubmit проверяешь флаг и допускаешь отправку.
ava
Black | 19.12.2004, 17:11 #
Цитата
<form action="script.php" method="post" onsubmit="return false;">

Помогло smile а насчет флагов, то они мне не нужны, т.к. при нажатии Ентера или кнопки Сказать срабатывает JavaScript, который отправляет информацию через скрытый фрейм.
ava
Aliance | 21.12.2004, 18:26 #
Скрипт, работающий под W3C DOM:

function blockEnter(evt) {
evt = (evt) ? evt : ((window.event) ? event : null);
var charCode = (evt.charCode) ? evt.charCode :
((evt.which) ? evt.which : evt.keyCode);
if (charCode == 13) {
return false;
} else {
return true;
}
}
...
<input type="text" name="search" size="40" onkeydown="return blockEnter(event)" />
ava
Sardar | 21.12.2004, 20:45 #
Aliance а ты проверил? ;-)
ava
Aliance | 21.12.2004, 20:55 #
Sardar
Ну во всех браузерах не имею возможности, скорее по теории даю...
Registrieren Sie sich oder melden Sie sich an, um schreiben zu können.
Unternehmen des Tages
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Mitwirkende
advanced
Absenden