Autor Zpráva
expes
Profil *
Mám odesílací formulář, který je trochu složitější a trvá cca tři sekundy než se odešle. Proto jsem přidal fičuru, která zobrazí div s textem "Odesílám, prosím čekejte..." po kliknutí na tlačítko odeslat.

Zobrazuji ho javascriptem (výchozí hodnota display je none)

function zobraz() {
      document.getElementById('zobrazovanydiv').style.display = "";
}


<input type="button" onclick="zobraz();" ....


Problém je v tom, že když je detekována chyba ve formuláři a po uživateli je požadováno, aby se vrátil zpět a chybu opravil, div Odesílám... je zobrazen, není skrytý...

Existuje nějaká jednoduchá možnost jak zařídit, aby div byl po kliknutí zpět zase skrytý? Asi by se to dalo řešit způsobem, aby po kliknutí zpět se přešlo na "novou" stránku a dříve vyplněné hodnoty skript předvyplnil, ale to je dalece nad mé možnosti...
TomasJ
Profil
Do tlačítka Zpět (myšleno na webu, ne nahoře v prohlížeči) nastavíš divu display:none; (událostí onclick)
<button onclick="document.getElementById('id_divu').style.display='none';history.go(-1);">Zpět</button>
Darker
Profil
Mně jedna věc nedává smysl, a to že pokud má div nazačátku display:none, prohlížeč po po obnovení přece nezobrazí...
Stejně tak nedává smysl provádět změnu na dokumentu, který právě opouštím, jak to dělá TomasJ.
expes
Profil *
TomasJ:
Já myslím, že by to fungovat mělo, bohužel ten můj skript nevypisuje oznámení o chybném vyplnění pole do úplné html stránky, ale pouze textovou větou a když to tlačítko Zpět vložím do kódu skriptu k té větě, tak chybuje...

Ale díky za bleskurychlou odpověď, doufám že to v budoucnu ještě využiju.
TomasJ
Profil
expes:
Teď mě napadlo, jestli nebude lepší načíst znova stránku? Texty u inputů se uloží do historie prohlížeče, takže po kliknutí do inputu se zobrazí seznam s těmi použitými hodnotami, čili pokud se to neskládá převážně z <textarea>, tak není problém vrátit na předchozí adresu i s načtením...

Darker:
Máš pravdu, to jsem si neuvědomil.
Darker
Profil
Ať už to s tím divem řešíš jakkoliv, nejspíš ne takto:
<form onsubmit="return kontrola()"><!--bla bla bla--></form>

function kontrola() {
 if(vsechno_ok)return true;
  else {
   document.getElementById('id_divu').style.display='block';
   return false;
  }




}

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