argon bulletin board

Експертно търсене  

Новини:

Регистрирането на нови потребители е временно деактивирано.

Автор Тема: Малко помощ за JavaScript и прихващането на клавиша Enter  (Прочетена 1905 пъти)

Jack Johnson

  • Неактивен Неактивен
  • Публикации: 704
  • Хора, пазете си здравето! То няма цена!

Обръщам се към всички, които поназнайват JavaScript повече от мен, а това предполагам са всички, които поназнайват JavaScript въобще. :)

Разработвам една клиентска система (HTML, JavaScript) и искам да постигна следния ефект:

1) Нямам форми в HTML-а.
2) Имам само стандартни бутони <input type="button"...
3) Искам при натискане на клавиша Enter в дадено текстово поле, да се изпълни JavaScript функцията, която вече е закачена за съответстващия бутон.

Поразрових се малко из мрежата, но това, на което попаднах работи само за IE, а в момента е късно и в главата ми е малко замъглено. :)

Така че ще се радвам, ако някой ме насочи към ресурс в мрежата, където този проблем вече е разрешен и работи в IE, Firefox и Chrome.

Ако някой желае повече подробности - става въпрос за ето това: http://suomea.bgzin.com

Искам да направя така, че когато човек въведе дума в текстовото поле за превод например, при натискане на клавиша Enter да се изпълни функцията за превод, а не да се налага потребителят да цъка с мишката върху съответния бутон.
Активен

А.Пенев

  • Неактивен Неактивен
  • Публикации: 157
    • www.alexander-penev.info

Незнам дали си пробвал с нещо от рода на:

<form action="#" method="get">
  <table align="center" border="0" width="520">
  <tbody><tr><td colspan="2" align="center"><b>Упражнение за превод на думи.</b></td></tr>
    <tr><td colspan="2">&nbsp;</td></tr>
    <tr>
      <td align="left"><span id="trFin2Bul">Преведете думата <font color="blue"><b>marraskuu</b></font> на Български:</span></td>
      <td align="right"><input id="txtFin2Bul" maxlength="20" type="text"></td>
    </tr>
    <tr>
      <td align="left"><span id="trBul2Fin">Преведете думата <font color="blue"><b>септември</b></font> на Фински:</span></td>
      <td align="right"><input id="txtBul2Fin" maxlength="20" type="text"></td>
    </tr>
    <tr>
      <td colspan="2" align="right"><input type="submit" value="Пробвай се" onclick="javascript:return tryWord();"/>
      </td></tr>
    <tr><td colspan="2">&nbsp;</td></tr>
  </tbody></table>
</form>
и tryWord() да завършва с:
return false;
или вместо последното да вмъкнеш return false; в самия onclick.
Активен
А.Пенев

Jack Johnson

  • Неактивен Неактивен
  • Публикации: 704
  • Хора, пазете си здравето! То няма цена!

<html>
  <head>
    <title>Тест за SUBMIT с няколоко форми.</title>
    <script>
      function tryMe(v) { alert(v); }
    </script>
  </head>
  <body>
    <form name="form1" method="get" action="#" onsubmit="javascript:return false;">
      <input type="text" />
      <input type="submit" onclick="javascript:tryMe(1);" />
    </form>
    <form name="form2" method="get" action="#">
      <input type="text" />
      <input type="submit" onclick="javascript:tryMe(2); return false;" />
    </form>
    <form name="form3" method="get" action="#" onsubmit="javascript:tryMe(3); return false;">
      <input type="text" />
      <input type="submit" />
    </form>
  </body>
</html>

И трите форми се държат перфектно в Chrome и Firefox, но IE не обработва коректно първите два случая и работи както трябва само по третия начин.

Иначе на теория ако искам чист submit - всичко работи перфектно, само че аз гоня точно обратното. :) И именно защото гоня обратното, искам по възможност да избягам от формите и да работя чисто с прихващане на натиснатите клавиши. Още се оглеждам за скрити зайци в някоя шапка, но ако не намеря гризачи скоро, ще прибягна до ползването на форми и изкуствено заобикаляна не submit събитието...

Покрай този проект си спомних защо не съм чак такъв фен на JavaScript...

EDIT:

За момента си реших проблема с ползването на формите. Въпреки това въпросът си остава актуален - как най-лесно, най-бързо и най-безболезнено мога да прихвана клавиша Enter, по възможност в повече браузъри?
« Последна редакция: 26.09.2009, 11:16:37 от Иван Давидов »
Активен

radko87

  • Неактивен Неактивен
  • Публикации: 112
  • Stupid man :D

Моя съвет е да ползваш JavaScript framework  като jQuery примерно .... така ще си осигуриш подръжка на повечето browser-и или поне IE,Opera, Chrome,Firefox .......... и други

jQuery -> http://code.google.com/p/jqueryjs/downloads/detail?name=jquery-1.3.2.js


 с помоща на jQuery  ето какво ми идва на ум (НЕ СЪМ ГО ТЕСТВАЛ ....)


$(document).ready(function(){

$("#id—на-елемента").keypress( function()
{
      if (event.keyCode == 13)  //13 мисля че беше ентера ... почти съм убеден
        {
           //кода ти тук
         }
} );

});

дано съм бил полезен
Активен
Sun Certified Java Programer/OCJP/ - От Sun спомен нема .....

А.Пенев

  • Неактивен Неактивен
  • Публикации: 157
    • www.alexander-penev.info

И трите форми се държат перфектно в Chrome и Firefox, но IE не обработва коректно първите два случая и работи както трябва само по третия начин.

Интересно за коя версия на IE говориш, защото при мен на IE8 и трите форми работят.

Иначе и аз смятах да ти препоръчам някой фреймуърк като jQuery или YUI, но понеже при мен тестовете минаха и реших, че не е нужно да блъскаш 100К скрипт за едно прихващане на Enter.

PS: Пробвай все пак при теб как ще се държи това:
function tryMe(v) { alert(v); return false; }...
...="javascript:return tryMe(1);"
Активен
А.Пенев

Jack Johnson

  • Неактивен Неактивен
  • Публикации: 704
  • Хора, пазете си здравето! То няма цена!

И трите форми се държат перфектно в Chrome и Firefox, но IE не обработва коректно първите два случая и работи както трябва само по третия начин.

Интересно за коя версия на IE говориш, защото при мен на IE8 и трите форми работят...

Говорех за IE версия 6, забравих да уточня, грешката е моя.

Ще обмисля възможността да вкарам някой фреймуърк, но ще обмисля до колко лесно бих могъл да го интегрирам, тъй като вече имам работещ код, който е доре написан (добре == работи) и не искам да започвам с писането на framework specific код от нулата.
Активен

А.Пенев

  • Неактивен Неактивен
  • Публикации: 157
    • www.alexander-penev.info

 :y:

Говорех за IE версия 6, забравих да уточня, грешката е моя.
Така си и мислех, то това не е Browser  :wink:
Активен
А.Пенев

JOKe

  • Неактивен Неактивен
  • Публикации: 2656
  • Code or Die

Иване ем за тва има  <meta http-equiv="X-UA-Compatible" content="chrome=1">

http://code.google.com/chrome/chromeframe/developers_guide.html
Активен