Autor Zpráva
Vendy
Profil
Ahoj a dobrý den,
můj dotaz bude vypadat hodně hloupě, ale...
Na webu užívám kontaktní formulář formou pluginu Contact Form 7, který dává možnosti text area, drop-down menu, checkboxes, radio atd. Zároveň vytváří reakce na e-mailu, takže jsem nikdy nemusela nastavovat nic jiného, než jen doprovodné komentáře (formou html), což pro mne, lamu, je naprosto ideální verzí.
Teď jsem se ale dostala do situace, kdy potřebuji vytvořit formulář, který bude zobrazovat něco, až po zaškrtnutí něčeho, tedy lehce anketní styl s rozcestníky. Příklad:
Chcete se účastnit
A) aktivně
B) pasivně

a každá z možností až po zaškrtnutí pak "vyplivne" další pokračování - A) aktivně -> umím to a ono; B) pasivně -> divák...

Ačkoliv do pluginu mohu přes html vstupovat, lze to jen částečně a vůbec netuším, jak bych vytvářela toto nastavení. Nejde tedy o plugin, ale o nastavení jako takové. Než se odhodlám nebrat léky, abych ušetřila peníze a mohla dát toto nastavení jako zakázku, první bych se chtěla zeptat vás, jak moc složité to je (v tahácích html se mi nepodařilo najít to, co bych potřebovala), zda bych formulář třeba nedokázala vytvořit i sama.
Za odpověď předem děkuji,
Vendulka
Keeehi
Profil
Zběžně jsem prolétl dokumentaci ale podle toho co jsem našel, respektive nenašel bych řekl, že tebou požadovanou funkcionalitu nepodporuje.

Jednoduché i když ne příliš elegantní řešení by bylo na stránku vložit iframe a do něj google forms, které tebou hledanou funkcionalitu umí.
smitka
Profil
CF7 toto přímo neumí, není však extra problém dodělat tuto logiku pomocí javascriptu, kdy se budou další políčka skrývat/odkrývat pomocí CSS - je to ale docela pracné...

wordpress.org/support/topic/this-is-how-to-have-simulated-conditional-fields-in-cf7-with-jquery

Další řešení je použít jiný typ kontaktního formuláře, který toto umí:

Za 39$ Gravity Forms: www.gravityforms.com
Nebo za stejnou cenu: ninjaforms.com (s tímto pluginem nemám tolik zkušeností, rozhodval jsem se mezi ním a gravity)

Zdarma je také vcelku dobrý plugin wordpress.org/plugins/caldera-forms
Marschmallow
Profil
Vendy:
Jak už píše smitka, lze použít skrývání a odkrývání textu pomocí JS. Tady máš ukázku rovnou na jakpsatweb: Skrývání a odkrývání textu na přání uživatele. A nepřijde mi, že by to bylo nějak obvlášť pracné.

Každopádně netuším, jak by se to dalo zakomponovat do toho Tvého formuláře. Jedině si vytvořit vlastní, anebo použít ty Google Forms.
Vendy
Profil
Keeehi:
tebou požadovanou funkcionalitu nepodporuje
Ano, nepodporuje. S google forms zatím nemám zkušenosti, určitě se na ně podívám.

smitka:
Další řešení je použít jiný typ kontaktního formuláře, který toto umí
Děkuji za tipy. Ten plugin gravity vypadá skvěle, na calderu se ještě podívám - logicky financovat plugin kvůli jednomu formuláři se mi ani trochu nechce (to je tak, když člověk spolupracuje s lidmi, kteří si jen umí zapnout počítač a hned mě mají za "ajťáka", protože jsem se z nouze nadrtila nějaké základy). Dozvěděla jsem se od Tebe víc, než na oficiální podpoře WP.

Marschmallow:
Jak už píše smitka, lze použít skrývání a odkrývání textu pomocí JS. Tady máš ukázku rovnou na jakpsatweb
Když jsem prolézala JPW, na toto jsem nenarazila, díky za odkaz.
smitka
Profil
Marschmallow:
jak by se to dalo zakomponovat

To je právě to pracné :-)

Je potřeba vygenerovat kompletní formulář a pak k němu napsat skript, který:

a) skryje všechna políčka, která se mají objevovat v závislostech na jiných a nastavit jim nějaké výchozí hodnoty (pokud jsou označena jako povinná)
b) napsat si pro všechna skrývaná políčka funkce pro jejich skrytí a odkrytí a případné přenastavování jejich hodnoty, pokud jsou povinná (např. při skrytí hodnotu "nevyplněno", při odkrytí hodnotu "", aby ji člověk musel vypsat sám)
c) na políčka, která mají rozhodovat se zavěsit událost on change např.

$('#otazka1_moznost1 input[type=checkbox]').change(function() {
   if($(this).is(":checked")) {
     zobrazA();zobrazB();skyjC();
   }
   else {
     zobrazC();skryjA();skryjB();
   }
});
Vendy
Profil
smitka:
Je potřeba vygenerovat kompletní formulář a pak k němu napsat skript

Krásná ukázka :) A pro nás, pro blbé, si rozložím větu na dvě části:
Vygenerovat kompletní formulář - tzn. vytvořit formulář, který obsahuje všechny části, včetně těch, které budu ukrývat pokud nebude odkliknuto. Chápu to tak správně?
Napsat k němu skript - tzn. zapsat všechny ty proměnné přímo do formuláře. Chápu to tak správně? Pokud ano, pak bych asi měla opustit automatické vygenerování některých částí, které plugin nabízí, a zapisovat je přes html. Rozumím tomu základnímu takto dobře?
smitka
Profil
Vendy:
1) Ano, přesně tak - vytvořit formulář kompletní se všemi částmi.
2) Vygenerování částí je v pořádku, jen je potřeba je ve výsledném kódu "obalit" třeba <div> s nějakými ID, aby na ně pak bylo možné odkazovat v javascriptu a za formulář dát ten ovládací skript (psáno velmi orientačně, bez hezkého formátování a bez řešení povinných políček):
<p>Otázka 1 (vyžadováno)<br />
  [radio* radio-381 "A" "B"] </p>
<div id="odpovediB">
<p>Prvni odpověď pro B<br />
    [text odpovedB1] </p>
<p>Druha odpověď pro B<br />
    [text odpovedB2] </p>
</div>    
<p>Otázka 2 (vyžadováno)<br />
    [text* odpoved2] </p>
<script>
jQuery("#odpovediB").hide();
jQuery("[name=radio-381]").change(function(){
  if(jQuery(this).val()==="B") jQuery("#odpovediB").show();
  else jQuery("#odpovediB").hide();
});
</script>
    
Vendy
Profil
smitka:
Krásně vysvětleno, děkuji.
A už se úplně vidím, jak to dělám. Jsem se zase nechala uvrtat do něčeho, co naprosto neumím. Když jsem se naposledy snažila "obalit kód", abych jej mohla vycentrovat, až tady jsem se dozvěděla, že to dělám sice dobře, ale šablona mě nepustí, dokud to nepřepíši v style.css. Pokusit se sice pokusím, ale nevidím to zrovna v růžových barvách, asi stejně formulář skončí jako zakázka.
Ale moc děkuji, alespoň vím, že to jde stavět i na logice pluginu, který znám zpaměti a nevadí mi, že na něj skoro nevidím (ani hlasové ovládání pc totiž neumí přelouskat kódy html a css, o asistenci druhého člověka, který mi nahrazuje oči, ani nemluvě).
Vendy
Profil
smitka:
Tak jsem se snažila a ani pomocí taháků, ani pomocí Tvých ukázek, jsem se nehnula z místa. Tudíž jsem zadala zakázku zde na fóru (Hledám člověka znalého javascriptu - pro dotvoření formuláře). Prostě div, script aspol. jsou silnější než já :D
Ale děkuji za rady.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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