argon bulletin board
Факултети => Факултет по математика и информатика => Темата е започната от: Jack Johnson в 26.09.2009, 00:13:10
-
Обръщам се към всички, които поназнайват JavaScript повече от мен, а това предполагам са всички, които поназнайват JavaScript въобще. :)
Разработвам една клиентска система (HTML, JavaScript) и искам да постигна следния ефект:
1) Нямам форми в HTML-а.
2) Имам само стандартни бутони <input type="button"...
3) Искам при натискане на клавиша Enter в дадено текстово поле, да се изпълни JavaScript функцията, която вече е закачена за съответстващия бутон.
Поразрових се малко из мрежата, но това, на което попаднах работи само за IE, а в момента е късно и в главата ми е малко замъглено. :)
Така че ще се радвам, ако някой ме насочи към ресурс в мрежата, където този проблем вече е разрешен и работи в IE, Firefox и Chrome.
Ако някой желае повече подробности - става въпрос за ето това: http://suomea.bgzin.com
Искам да направя така, че когато човек въведе дума в текстовото поле за превод например, при натискане на клавиша Enter да се изпълни функцията за превод, а не да се налага потребителят да цъка с мишката върху съответния бутон.
-
Незнам дали си пробвал с нещо от рода на:
<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"> </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"> </td></tr>
</tbody></table>
</form>
и tryWord() да завършва с:
return false;
или вместо последното да вмъкнеш return false; в самия onclick.
-
<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, по възможност в повече браузъри?
-
Моя съвет е да ползваш 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 мисля че беше ентера ... почти съм убеден
{
//кода ти тук
}
} );
});
дано съм бил полезен
-
И трите форми се държат перфектно в Chrome и Firefox, но IE не обработва коректно първите два случая и работи както трябва само по третия начин.
Интересно за коя версия на IE говориш, защото при мен на IE8 и трите форми работят.
Иначе и аз смятах да ти препоръчам някой фреймуърк като jQuery или YUI, но понеже при мен тестовете минаха и реших, че не е нужно да блъскаш 100К скрипт за едно прихващане на Enter.
PS: Пробвай все пак при теб как ще се държи това:
function tryMe(v) { alert(v); return false; }
...
...="javascript:return tryMe(1);"
-
И трите форми се държат перфектно в Chrome и Firefox, но IE не обработва коректно първите два случая и работи както трябва само по третия начин.
Интересно за коя версия на IE говориш, защото при мен на IE8 и трите форми работят...
Говорех за IE версия 6, забравих да уточня, грешката е моя.
Ще обмисля възможността да вкарам някой фреймуърк, но ще обмисля до колко лесно бих могъл да го интегрирам, тъй като вече имам работещ код, който е доре написан (добре == работи) и не искам да започвам с писането на framework specific код от нулата.
-
:y:
Говорех за IE версия 6, забравих да уточня, грешката е моя.
Така си и мислех, то това не е Browser :wink:
-
Иване ем за тва има <meta http-equiv="X-UA-Compatible" content="chrome=1">
:Д
http://code.google.com/chrome/chromeframe/developers_guide.html