Autor Zpráva
wifinko028
Profil
Ahojte, prosím vás potrebujem radu. Potreboval by som script (nie som si istý či píšem do správnej sekcie, ale myslím, že áno). Mam <select> mám v ňom napr. TEST 1, TEST2, TEST3, potreboval by som ak v selecte vyberiem napr. TEST 1 zobrazilo by sa mi ihneď v inpute číslo ktoré mám nastavené k tomu selectu. Dúfam, že som to napísal zrozumiteľne. Vopred ďakujem za všetky rady.
Jan Tvrdík
Profil
<!doctype html>
<form>
  <input name="a" type="text">
  <select name="b" onchange="this.form.a.value = this.options.item(this.selectedIndex).value">
    <option value="1">první</option>
    <option value="2">druhý</option>    
  </select>
</form>
wifinko028
Profil
Díki moc avšak nie je možná aj iná voľba? Pretože ja pri OPTION value potrebujem priamy text pretože sa mi to zapisuje do DB teda ten text co je vo value.
nemeja
Profil
wifinko028:
Pretože ja pri OPTION value potrebujem priamy text pretože sa mi to zapisuje do DB teda ten text co je vo value.
Proč zapisujete int jako string? Formulář vám pošle string, je už jenom na vás, jestli ho uložíte jako string, nebo ne. Pokud chcete uložit string, tak proměnnou obalte uvozovkama, jinak nechte jen přetypovanou proměnnou.

String:
INSERT INTO table ( formvalue ) VALUES ( '".$form_value ."' );

Int:
INSERT INTO table ( formvalue ) VALUE ( ".(int)$form_value." );
Chamurappi
Profil
Reaguji na Jana Tvrdíka:
this.form.a.value = this.options.item(this.selectedIndex).value
Hodnota vybraného <option>u je i v this.value.


Reaguji na wifinka028:
ja pri OPTION value potrebujem priamy text
Asi úplně nerozumím, co je tímto myšleno (a nevím, jak to pochopil nemeja). Do value elementů <option> si můžeš dát, co chceš, nemusí tam být čísla.
nemeja
Profil
Chamurappi:
Pochopil jsem to tak, že po odeslání chce uložit hodnotu do databáze jako string.
Kubo2
Profil
" Dúfam, že som to napísal zrozumiteľne "
Nie, to si teda nenapísal. To čo si chcel, sa dalo najlepšie pochopiť ako v [#2].
Do value v option si môžeš dať úplne ľubovolnú hodnotu (dúfam, že sa neopakujem).
wifinko028
Profil
Chápem vás, ale ja to myslel takto, tie čísla sú vo value lenže ja už vo value niečo mám čo tam musí byť, preto tie čísla nemôžem mať aj vo value.
Jan Tvrdík
Profil
wifinko028:
Tak potom použij třeba data atributy.

<!doctype html>
<form>
  <input name="a" type="text">
  <select name="b" onchange="this.form.a.value = this.options.item(this.selectedIndex).dataset.foo">
    <option value="1" data-foo="aaa">první</option>
    <option value="2" data-foo="bbb">druhý</option>    
  </select>
</form>  

(dataset nefunguje pořádně v IE)
wifinko028
Profil
Díki moc, veľmi.
Chamurappi
Profil
Reaguji na Jana Tvrdíka:
Proč používat dataset a ne něco, co funguje prakticky odjakživa všude?

nefunguje pořádně v IE
Lépe řečeno ve většině používaných verzí nefunguje vůbec.



Reaguji na wifinka028:
A to jiné číslo má být předvyplněné do <input>u s úmyslem, že si ho má člověk prohlédnout (a případně i změnit), nebo s úmyslem, že se jen pošle na server jinou cestou? Pokud je to ta druhá možnost, tak to máš divně vymyšlené a měl bys to udělat jinak. Pokud je to ta první možnost, řešil bych to třeba takhle:
<form>
  <input name="alfa">
  <select name="beta" onchange="this.form.alfa.value = {'a': 1, 'b': 2, 'c': 3}[this.value];">
    <option value="a">X
    <option value="b">Y
    <option value="c">Z
  </select>
</form>

Kdybys chtěl používat vlastní atributy, tak tento postup funguje všude:
<form>
  <input name="alfa">
  <select name="beta" onchange="this.form.alfa.value = this.options[this.selectedIndex].getAttribute('cislo');">
    <option value="a" cislo="1">X
    <option value="b" cislo="2">Y
    <option value="c" cislo="3">Z
  </select>
</form>
Jan Tvrdík
Profil
Chamurappi:
Proč používat dataset a ne něco, co funguje prakticky odjakživa všude?
Osobní preference, jako tvůrce webu mám právo pohrdat si kým chci, stejně jako návštěvníci webu mají právo pohrdat mnou.
Chamurappi
Profil
Reaguji na Jana Tvrdíka:
Osobní úchylky ovšem vedou k podprůměrně kvalitním radám.
wifinko028
Profil
Chamurappi:
Chcel som to aj tak ako píšete vy ale ja som zmenil aj ten názov pri onchange="this.form.alfa.value a tak mi to nefungovalo ďakujem.
Chamurappi
Profil
Reaguji na wifinka028:
Oba mé kódy fungují. Pokud jsi někde udělal chybu, prosím o odkaz na živou ukázku.
wifinko028
Profil
Díki, ale ja to používam v echo ""; tam mi to avšak nefunguje.

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: