Autor Zpráva
Enko
Profil
Ahoj,
jsem naprostý začátečník v Javascriptu a hledám jak udělat aby mi ve formuláři níže:
  <input type="text" name="jmeno" value="" id="jmeno">
  
  <select name="rolovatko" id="rolovatko">
    <option value="">...</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
  </select>
když kliknu na nějakou hodnotu ze selectu "rolovatko", aby se mi doplnila tato hodnota do pole "jmeno". Našel sjem si, že se to bude nejspíš dělat pomocí funkce onchange,a le nevím, jak to zprovoznit. Stačí mi návod s příkladem, klidně i v jQuery a podle tohoto si to doplním. Jen to budu potřebuji svázat s idčky těch formulářových polí, protože na jedné stránce budu mít víc stejných funkcionalit.
Děkuji za každou radu


Tak už jsem si poradil:
  <input type="text" name="jmeno" value="" id="jmeno">
  
  <select onchange="dopln()" name="rolovatko" id="rolovatko">
    <option value="">...</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
  </select>

<script type="text/javascript"> 
 function dopln() { 
   document.getElementById('jmeno').value = document.getElementById('rolovatko').value; 
 } 
</script>
Kajman
Profil
Enko:
protože na jedné stránce budu mít víc stejných funkcionalit

Pak je lepší cíl předat jako parametry a hodnotu načítat z this. Něco jako

function dopln(id, vzor) {
  var cil = document.getElementById(id);
  if(cil && vzor.options)
  {
    cil.value = vzor.options[vzor.selectedIndex].value;
  }
}

Volání pak bude onchange="dopln('jmeno', this)"
Enko
Profil
Kajman:
Luxus! Děkuju :)
Chamurappi
Profil
Reaguji na Enka:
Pokud jsou ve stejném formuláři, napsal bych to:
<select onchange="this.jmeno.value = this.value">
Ídéčka nejsou nutná.

Edit: ↓ Ou, pardon, jsem na ten form zapomněl. Mně to přišlo nějak podezřele krátké :-)
1Pupik1989
Profil
Jen opravím Chamurappiho.

this.form.jmeno.value = this.value;

Nicméně souhlasím. Je to nejčistější a nejkratší zápis.
Kajman
Profil
A nehrozí tam kolize použitého jména s nějakou vlastností formuláře?
Chamurappi
Profil
Reaguji na Kajmana:
Kolize by hrozila zejména té vlastnosti formuláře. Když by měl nějaký formulářový prvek name="submit", pak by v this.form.submit byl ten prvek a ne standardní metoda na odeslání.
Enko
Profil
Děkuji všem za pomoc. Používám řešení s this.... netušil jsem, jak to může být jednoduché. Děkuji :-) Ovšem bych ještě rád trochu něco vylepšil.
Mám toto:
  <input type="text" name="uid" value="" id="uid">

  <select name="uid_rolovatko" id="uid_rolovatko">
    <option value="">...</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
  </select>
  
  <input type="text" name="jmeno" value="" id="jmeno">
  
  <select name="jmeno_rolovatko" id="jmeno_rolovatko">
    <option value="">...</option>
    <option value="jmeno1">jmeno1</option>
    <option value="jmeno2">jmeno2</option>
    <option value="jmeno3">jmeno3</option>
  </select>
Což si generuji z PHP ze společného pole, které vypadá takto:
$emp[0]["code"]= 1234; //unikatni kod uzivatele
$emp[0]["name"]= "jmeno uzivatele1";//jmeno uzivatele
$emp[1]["code"]= 1235; //unikatni kod druheho uzivatele
$emp[1]["name"]= "jmeno uzivatele2";//jmeno druheho uzivatele
//... atd...
A jde o to, jak mám udělat následující:
Pokud ze selectu "uid_rolovatko" vyberu a kliknu na nějakou hodnotu aby se doplnilo zároveň i správné jméno do inputu "jmeno" podle pole výše. Nebo když vyberu a kliknu na jméno ze selectu "jmeno_rolovatko", aby se zároveň doplnilo i správné uid inpuput "uid". Podle mě to bude hrozně jednoduché, a možná by se mi to podařilo nějak zbastlit, ale raději si nechám poradit :-)
budu rád za každou radu.
Kajman
Profil
Když ty údaje spolu souvisí, nemá tam být jen jedno rolovátko? Kde value bude jeho id a uživatel uvidí jeho jméno?

<select name="uzivatel_rolovatko" onchange="this.form.uid.value=this.value; this.form.jmeno.value=this.options[this.selectedIndex].text;">
    <option value="">...</option>
    <option value="1234">jmeno1</option>
    <option value="1235">jmeno2</option>
    <option value="1233">jmeno3</option>
  </select>
Enko
Profil
Kajman:
Ano, takto to je samozřejmě perfektní řešení.

Děkuju :-)
Dano_V
Profil *
Reagujem na
Kajman:

Toto je vynikajúce riešenie! Keby sa takýmto spôsobom dalo vypísať aj poradové číslo vybranej položky, alebo to aj poslať do funkcie, - dajme tomu kontrola() - bolo by to vynikajúce a pomohlo by to aj mne.

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: