Нажать кнопку в JavaScript
От: Vovan_2 Россия  
Дата: 13.04.09 10:46
Оценка:
Подскажите, пожалуйста, как корректно написать такой код. Нужно, чтобы по нажатию Enter нажималась кнопка OK:

<html>
<script language="javascript">
function PressFindButton(event)
{
    if (event.keyCode == 13)
    {
        document.f.b.click();
    }
}
</script>
<body>
<form id="frm" name="f">
<input type="text" name="tratata" onKeyDown="PressFindButton(event)"><br>
<input type="submit" name="b" value="OK" id="butt">
</form>
</body>
<html>

В Файерфоксе работает, в IE какие-то проблемы: если файл с диска открываешь, то работает, если выложить и открыть с сервера, то не работает...
Re: Нажать кнопку в JavaScript
От: . Великобритания  
Дата: 13.04.09 14:46
Оценка:
Vovan_2 wrote:

> Подскажите, пожалуйста, как корректно написать такой код. Нужно, чтобы

> по нажатию Enter нажималась кнопка OK:
Не делай так, очень бесят сайты, когда невозможно autocomplete использовать клавиатурный.
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[2]: Нажать кнопку в JavaScript
От: Vovan_2 Россия  
Дата: 13.04.09 15:26
Оценка:
Здравствуйте, ., Вы писали:

.>Не делай так, очень бесят сайты, когда невозможно autocomplete использовать клавиатурный.


Не нужен там автокомплит. Даже хорошо, если не будет работать.
Re[3]: Нажать кнопку в JavaScript
От: . Великобритания  
Дата: 13.04.09 16:34
Оценка:
Vovan_2 wrote:

> Не нужен там автокомплит. Даже хорошо, если не будет работать.

При нажатии enter сабмитится форма сама по себе, без скриптов. Вроде это везде работает. Правда некоторые браузеры сабмитят первую кнопку, некоторые — нет (IE как раз вроде).
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[4]: Нажать кнопку в JavaScript
От: Vovan_2 Россия  
Дата: 14.04.09 08:09
Оценка:
Здравствуйте, ., Вы писали:

.>При нажатии enter сабмитится форма сама по себе, без скриптов. Вроде это везде работает. Правда некоторые браузеры сабмитят первую кнопку, некоторые — нет (IE как раз вроде).


Ну сабмитится. Я разве говорю, что нет? :)
Но в запрос при этом не добавляется buttonName=value, а надо, чтобы добавлялось...
Re[5]: Нажать кнопку в JavaScript
От: Роман Дубров Украина Я@Blogspot
Дата: 14.04.09 12:55
Оценка: +1 -1
Vovan_2 пишет:

> Но в запрос при этом не добавляется buttonName=value, а надо, чтобы

> добавлялось...

кривой подход и никакой полезной информации не несет... факт сабмита
формы известен и без этого
Posted via RSDN NNTP Server 2.1 beta
http://www.linkedin.com/in/romandubrov .::. http://roman-dubrov.blogspot.com/ .::. http://www.flickr.com/photos/romandubrov/
Re[6]: Нажать кнопку в JavaScript
От: Vovan_2 Россия  
Дата: 14.04.09 13:58
Оценка:
Здравствуйте, Роман Дубров, Вы писали:

РД>кривой подход и никакой полезной информации не несет... факт сабмита

РД>формы известен и без этого

Охохохо...
Ну почему бы просто не подсказать (если знаете, конечно)?
Это вам не несёт, а веб-серверу несёт! Не запускается обработчик кнопки, если не прислать ему это явно. В код обработчика я вмешиваться не могу, а поправить страницу — в моих силах. Так что, решит кто-нибудь задачу?
Re[7]: Нажать кнопку в JavaScript
От: SergASh  
Дата: 16.04.09 07:56
Оценка:
Здравствуйте, Vovan_2, Вы писали:

Насколько я понимаю, при нажатии на Enter выполнение сабмита как бы ставится в очередь. Поэтому да, ваш обработчик запускается, но тот факт, что он нажимает на кнопку не отметяет запланированного ранее сабмита, который был вызван отнюдь не кнопкой. Что-то подобное у меня было, но давненько. Идея была в том, чтобы сразу после загрузки страницы переопределить обработчик сабмита для формы, а старый запомнить, например в expando-свойстве. В новом обработчике проверяется флажок, который устанавливается обработчиком нажатия Enter. Если флажок выставлен, то отменяете сабмит возвращая false. Но перед возвратом восстанавливаете старый обработчик для формы. Если флажок не выставлен, то прямо передаёте управление запомненному обработчику.
Re[8]: Нажать кнопку в JavaScript
От: SergASh  
Дата: 16.04.09 08:03
Оценка:
SAS>Насколько я понимаю, при нажатии на Enter выполнение сабмита как бы ставится в очередь. Поэтому да, ваш обработчик запускается, но тот факт, что он нажимает на кнопку не отметяет запланированного ранее сабмита, который был вызван отнюдь не кнопкой. Что-то подобное у меня было, но давненько. Идея была в том, чтобы сразу после загрузки страницы переопределить обработчик сабмита для формы, а старый запомнить, например в expando-свойстве. В новом обработчике проверяется флажок, который устанавливается обработчиком нажатия Enter. Если флажок выставлен, то отменяете сабмит возвращая false. Но перед возвратом восстанавливаете старый обработчик для формы. Если флажок не выставлен, то прямо передаёте управление запомненному обработчику.
Чуть не забыл. Работать оно будет только тогда, когда флажок выставляется в коде, предшествующем этому как бы поставленному в очередь сабмиту. Если после выставления флажка не затребовать новый сабмит явно, например программным нажатием на кнопку, то работать не будет.

К сожалению, я не знаю где в документации описано такое поведение в ответ на нажатие Enter. Так что это все только из экспериментов следует. Если кто знает, поделитесь ссылкой.
Re[7]: Нажать кнопку в JavaScript
От: . Великобритания  
Дата: 17.04.09 03:21
Оценка:
Vovan_2 wrote:

> Ну почему бы просто не подсказать (если знаете, конечно)?

> Это вам не несёт, а веб-серверу несёт! Не запускается обработчик кнопки,
> если не прислать ему это явно. В код обработчика я вмешиваться не могу,
> а поправить страницу — в моих силах. Так что, решит кто-нибудь задачу?
Нужно менять обработчик формы. В таких условиях задача не разрешима. Ну можешь добавить <input type="hidden" name="b" value="OK"/>. Только это всё извратъ.
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re: Нажать кнопку в JavaScript
От: Аноним  
Дата: 17.04.09 10:39
Оценка:
Здравствуйте, Vovan_2, Вы писали:

V_>Подскажите, пожалуйста, как корректно написать такой код. Нужно, чтобы по нажатию Enter нажималась кнопка OK:


Попробуй

function PressFindButton(event)
{
    if (event.keyCode == 13)
    {
        event.cancelBubble = true;
        event.returnValue = false;
        document.f.b.click();
    }
}
Re[2]: Нажать кнопку в JavaScript
От: Vovan_2 Россия  
Дата: 20.04.09 08:38
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Попробуй

А>

А>function PressFindButton(event)
А>{
А>    if (event.keyCode == 13)
А>    {
А>        event.cancelBubble = true;
А>        event.returnValue = false;
А>        document.f.b.click();
А>    }
А>}
А>


Неа, то же самое...
Re[8]: Нажать кнопку в JavaScript
От: Vovan_2 Россия  
Дата: 20.04.09 08:45
Оценка:
Здравствуйте, SergASh, Вы писали:

SAS>Здравствуйте, Vovan_2, Вы писали:


SAS>Насколько я понимаю, при нажатии на Enter выполнение сабмита как бы ставится в очередь. Поэтому да, ваш обработчик запускается, но тот факт, что он нажимает на кнопку не отметяет запланированного ранее сабмита, который был вызван отнюдь не кнопкой.


Почему же тогда:
1. Работает в IE, если открыть файл с диска?
2. Прекрасно работает в FireFox?

Я так понимаю, что всё же обработчик запускается раньше, чем сабмит...
Re: Нажать кнопку в JavaScript
От: Muxa  
Дата: 20.04.09 09:21
Оценка:
когда мне такое надо было, я именно так и делал.
попробовал твой код.
ФФ 3.0.8, ИЕ 6.0.2900.2180.xpsp_sp2_rtm.040803-2158 — полет нормальный, при чем неважно где лежит файл локально или на серваке.
Re: Нажать кнопку в JavaScript
От: _kostet_ Россия  
Дата: 21.04.09 15:30
Оценка:
Vovan_2 wrote:
>
>
> Подскажите, пожалуйста, как корректно написать такой код. Нужно, чтобы
> по нажатию Enter нажималась кнопка OK:
>
> <html>
> <script language="javascript">
> function PressFindButton(event)
> {
> if (event.keyCode == 13)
> {
> document.f.b.click();
> }
> }
> </script>
> <body>
> <form id="frm" name="f">
> <input type="text" name="tratata" onKeyDown="PressFindButton(event)"><br>
> <input type="submit" name="b" value="OK" id="butt">
> </form>
> </body>
> <html>
>

а зачем программно нажимать кнопку, если можно просто засабмитить форму ?
или я чего то недопонял...

типа так
function PressFindButton(event)
{
   if (event.keyCode == 13)
   {
     document.f.submit();
   }
}
Posted via RSDN NNTP Server 2.1 beta
Re[2]: Нажать кнопку в JavaScript
От: Vovan_2 Россия  
Дата: 23.04.09 09:48
Оценка:
Здравствуйте, Muxa, Вы писали:

M>когда мне такое надо было, я именно так и делал.

M>попробовал твой код.
M>ФФ 3.0.8, ИЕ 6.0.2900.2180.xpsp_sp2_rtm.040803-2158 — полет нормальный, при чем неважно где лежит файл локально или на серваке.

Ну не работает в IE, чесслово! Только что проверил в твоей же версии, вплоть до последних циферок. И в IE 7 не работает. А в ФФ – да, работает бес проблем, я так и говорил...
Причём, что странно. Если я после click() добавлю alert("!")

function PressFindButton(event)
{
    if (event.keyCode == 13)
    {
        document.f.b.click();
        alert("!");
    }
}

то всё работает (с сообщением, конечно). Комментирую:

function PressFindButton(event)
{
    if (event.keyCode == 13)
    {
        document.f.b.click();
        //alert("!");
    }
}

и перестаёт работать! Бред какой-то, ничего не понимаю...

Ещё один интересный момент: когда открываешь с диска, то сверху в браузере появляется строка, информирующая о том, что некоторое содержимое заблокировано. Пока не разрешишь заблокированное содержимое, не работает click(). Как только отключишь – начинает работать. Когда открываешь с сервера, жёлтая строка не появляется – просто не работает и всё.
Re[7]: Нажать кнопку в JavaScript
От: Роман Дубров Украина Я@Blogspot
Дата: 23.04.09 11:34
Оценка:
Vovan_2 пишет:

> Это вам не несёт, а веб-серверу несёт! Не запускается обработчик кнопки,


а если юзер по факту кнопку не нажимал — какие тут обработчики?

> если не прислать ему это явно. В код обработчика я вмешиваться не могу,


аспнет?

> а поправить страницу — в моих силах. Так что, решит кто-нибудь задачу?


ну тут уже парочку извратов подсказали...
Posted via RSDN NNTP Server 2.1 beta
http://www.linkedin.com/in/romandubrov .::. http://roman-dubrov.blogspot.com/ .::. http://www.flickr.com/photos/romandubrov/
Re: Нажать кнопку в JavaScript
От: marx paul Германия Провести онлайн-опрос
Дата: 23.04.09 14:06
Оценка:
Здравствуйте, Vovan_2, Вы писали:

V_>Подскажите, пожалуйста, как корректно написать такой код. Нужно, чтобы по нажатию Enter нажималась кнопка OK:


V_>
V_><html>
V_><script language="javascript">
V_>function PressFindButton(event)
V_>{
V_>    if (event.keyCode == 13)
V_>    {
V_>        document.f.b.click();
V_>    }
V_>}
V_></script>
V_><body>
V_><form id="frm" name="f">
V_><input type="text" name="tratata" onKeyDown="PressFindButton(event)"><br>
V_><input type="submit" name="b" value="OK" id="butt">
V_></form>
V_></body>
V_><html>
V_>

V_>В Файерфоксе работает, в IE какие-то проблемы: если файл с диска открываешь, то работает, если выложить и открыть с сервера, то не работает...

в IЕ надо дописать у формы метод и экшн

<form id="frm" name="f" method="get" action="test.php">

тада все должно работать ок
Провести онлайн-опрос
Online-Umfrage erstellen
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.