Autor Zpráva
Pavel5
Profil *
Dobré dopoledne,
v JS bohužel plavu a potřeboval bych, pokud to jde, triviální věc.

Mám takový input (popř. prázdnou hodnotu ve value):

<input value="2012-31-08" type="text" name="datum">

a potřebal bych ve formuláři checkbox, který by po zatržení přepsal (popř. doplnil) hodnotu ve value na konec roku (value="2012-31-12").

Lze to nějakým způsobem řešit?

Děkuji
nigdo
Profil
<form action="#" method="post" name="formular">
    <input value="2012-31-08" type="text" name="datum">
    <input type="checkbox" name="cb_konec" id="cb_koneci" onchange="zmena(formular);"><label for="cb_koneci">konec roku</label>
</form>
<script>
function zmena(formular){
    if (formular.cb_konec.checked){
        var x = formular.datum.value.substr(0, 4);
        formular.datum.value = x+"-31-12";
    }
}
</script>
z data vypreparovat první 4 znaky a poté přidat den a měsíc
nevím kdo určuje ten vstup nebo zda u něho probíhá nějaká validace, takže to možná není bezpečné spoléhat se na první 4 znaky, protože pokud by první 4 znaky byly nějaká blbost - např. "asdf", tak to vyhodí "asdf-31-12"
Pavel5
Profil *
Funguje to dobře, jenom když formulář začíná
<form action='' method='post' name='formular' enctype='multipart/form-data'>
.
.
.
.
<input type='submit' value='OK' name='formular' />
 

Tak JS nefunguje. Po odstranění odesílacího tlačíka je vše ok.
Chamurappi
Profil
Reaguji na Pavla5:
Proč dáváš formuláři i odesílacímu tlačítku stejné name? Jak má prohlížeč poznat, že proměnnou formular myslíš zrovna formulář a ne tlačítko?
Tori
Profil
Pavel5:
Místo onchange bych raději použila onclick. MSIE vyvolává událost change až po opuštění checkboxu, např. kliknutí na jiný prvek. edit: A pokud se stav prvku nezměnil - zaškrtnu a zas odškrtnu - nevyvolá ji vůbec.

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: