Autor Zpráva
Suta
Profil
Prosím o radu, jak vyřešit následující.

1. Mám seznam německých znaků. Pokud uživatel klikne na kterýkoliv z nich, díky javascriptové funkci se znak přenese do textového inputu ve formuláři. Vše funguje, jak má, níže je ukázka kódu.

//javascript
function vloz_znak(text)
{
document.forms["nazev_formulare"].elements["nazev_inputu"].value=docum ent.forms["nazev_formulare"].elements["nazev_inputu"].value+text;
  document.forms["nazev_formulare"].elements["nazev_inputu"].focus();
}

//volání funkce
<a href="javascript: vloz_znak('nejaky_nemecky_znak')">nejaky_nemecky_znak</a>

//formulář
<form name="nazev_formulare">
<input type="text" name="nazev_inputu">
</form>


2. Moje otázka zní, jak napsat, aby se znak vložil do toho textového inputu, v němž uživatel zrovna píše (tedy je aktivní). Např. mám pod sebou dvě formulářové pole, do prvního uživatel má vyplnit 2. pád německého slova, do druhého pak množné číslo (opět německy)... Jak upravit kód, aby se znak vložil do toho pole, v němž zrovna "stojím" ?

Díky za radu.
peta
Profil
jakpsatweb - javascript - udalosti
<script>var x;</script>
<INPUT onenter="x=this;" onkeydown="x=this;">
<SPAN onclick="x.value+='Ahoj';x.focus();">
Suta
Profil
peta
Bohužel mi tvá rada nepomohla, přesto díky za snahu. Událost onenter v javascriptu jsem nikde nenašel (alespoň na jakpsatwebu není určitě), použití onkeydown jsem pro můj konkrétní případ jsem taky nepochopil. Bude to tím, že javascript ovládám z 30% (a to je možná hodně), talže z tvého příkladu jsem si nedokázal vzít nic, co by mi pomohlo vyřešit popsaný problém.

<input type="text" name="prvni_input">
<input type="text" name="druhy_input">


Na stránce mám dále seznam znaků, při kliknutí na kterýkoliv potřebuji, aby se vložil do toho inputu, v němž je kurzor (a s rozšířením které si pak snad už dokážu dodělat - není-li kurzor ani v jednom inputu, vloží se znak permanentně do toho prvního..).

Dalším otazníkem pro mě pak je situace, kdy kurzor bliká v poli uprostřed textu, např.:
v poli mám "text | text" - tedy kurzor uprostřed, a chci, aby při kliknutí na určitý znak na stránce se tento znak vložil na místo kurzoru (teď se mi vkládá vždy na konec).

Pomůže někdo?
Suta
Profil
Přikládám výsledné řešení:

FUNKCE, KTERÁ VEPÍŠE ZVOLENÝ TEXT NA PŘESNOU POZICI KURZORU VE FORMULÁŘI

<script>
//funkce vepise text na presnou pozici kurzoru ve formulari
function vepis_text(vkladany_text) {

var nazev_inputu=document.forms["nazev_formulare"].elements["nazev_inputu"   ];

    //IE support
    if(document.selection) {
        nazev_inputu.focus();
        range = document.selection.createRange();
        range.text = vkladany_text;
    }
    //MOZILLA/NETSCAPE support
    else if (nazev_inputu.selectionStart || nazev_inputu.selectionStart == '0') {
        var startPos = nazev_inputu.selectionStart;
        var endPos = nazev_inputu.selectionEnd;
        nazev_inputu.value = nazev_inputu.value.substr(0, startPos)
                      + vkladany_text
                      + nazev_inputu.value.substr(endPos);
        nazev_inputu.focus();
          nazev_inputu.selectionStart = startPos + vkladany_text.length;
          nazev_inputu.selectionEnd = startPos + vkladany_text.length;
    } else {
        nazev_inputu.value += vkladany_text;
        nazev_inputu.focus();
    }
}
</script>


<a href="#" onclick="vepis_text('Ahojky, jak se vede?'); return false;">KLIKNI</a>

<form name="nazev_formulare">
<input name="nazev_inputu">
</form>
Zahy[cz]
Profil *
Šlo by do této funkce <nad timto prispěvkem> vložit nejak misto toho 'Ahojky, jak se vede?' tohle"<img src="1.gif" border="0" />" skoušel jsem ale když to tam dam tak to nic nevypise!!? nebo to nejak jinak udelat?? pls poradte javaskript vubec neumim. Dik...
_es
Profil
Suta
Na zistenie posledného "aktívneho" vstupného inputu môžeš využiť udalosti toho inputu.
Najjednoduchšie je využiť udalosť onfocus, ktorá ti uloží objekt toho inputu do nejakej premennej.
Takisto objekt toho inputu nemusíš opakovane zisťovať, ale si ho môžeš uložiť do premennej, asi nejako takto:
<script>
var x;
function vloz_znak(text){
  x.value = x.value + text;
  x.focus();
}
</script>

<a href="javascript: vloz_znak('nejaky_nemecky_znak')">nejaky_nemecky_znak</a>

<form name="nazev_formulare">
<input type="text" name="nazev_inputu1" onfocus="x=this;">
<input type="text" name="nazev_inputu2" onfocus="x=this;">
</form>
<script>
x=document.forms["nazev_formulare"].elements["nazev_inputu1"];
</script>

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0