Autor Zpráva
lionel messi
Profil
Zdravím,

na webe mám kalkulačku riešenú nasledovným spôsobom: Živá ukázka (nesúvisiace časti odmazané).

Môj problém je nasledovný: V rámci e-mailovej komunikácie návštevníci údaje zadané z kalkulačky často kopírujú. Hoci po spočítaní pod formulár (v PHP) vypíšem informáciu o názve produktu a počte kusov, niektorí užívatelia neskopírujú túto časť, ale vrchnú, teda názov produktu a hodnotu s inputov. Na niektorých mailoch (Gmail) sa prvok skopíruje ako input s hodnotou, ktorá však ide meniť, navyše, na niektorých sa hodnota neprekopíruje vôbec a mailom dorazí niečo takéto: Lorem ks Ipsum ks.

Potreboval by som preto dosiahnuť, aby sa pri označovaní danej položky <label> formulára označila aj hodnota v inpute tak, aby nevznikal problém pri použití „copy–paste“. Bohužiaľ moje znalosti JavaScriptu (úplné základy syntaxe) na to nestačia a preto by som chcel požiadať o nasmerovanie. Zároveň by ma zaujímala spoľahlivosť tohto riešenia (inak povedané, približne aká veľká časť návštevníkov prezerá stránky s vypnutými skriptmi). Pripraviť alternatívu pre vypnutý JS by nemal byť až taký veľký problém (vypísať informácie do <textarea>).

Ďakujem veľmi pekne za odpoveď.
Keeehi
Profil
lionel messi:
Dovolil bych si navrhnout workaround. Nedal by se ten formulář podruhé už nevypisovat?
$showForm = true;
if ( /* dostal jsem od uživatele data */ ) {
    // zpracovávám data
    
    if ( /* zpracování proběhlo ok */ ) {
        $showForm = false;
    }
}

if ($showForm) {
    // <form> ...
} else {
    echo "Díky za odeslání formuláře. Tady je to, co jsem vypočítal";
    echo "Lorem $loremPcs ks Ipsum $ipsimPCS ks";
    echo "Toto si okopírujte a pošlete mi to na mail"
}

Ještě technická - Proč ti to mají posílat emailem, když už ta data jednou máš?
lionel messi
Profil
Keeehi:
Vďaka za pristavenie.

Nedal by se ten formulář podruhé už nevypisovat?
Aj to by samozrejme bola jedna z možností (pre mňa) nenáročná na prevedenie, vidím tam však možný problém. Ak sa návštevník bude chcieť vrátiť a zmeniť zadané údaje, bolo by to veľmi otravné.

Ještě technická - Proč ti to mají posílat emailem, když už ta data jednou máš?
Lebo je to celé o niečo zložitejšie. Prácu s MySQL mám celkom solídne zvládnutú, ale ukladanie každého vstupu by viedlo k obsiahlej tabuľke s množstvom riadkov, v ktorej by bolo pramálo užitočných údajov. Odosielanie akýchkoľvek dát na mail nie je podmienkou použitia kalkulačky a naopak. Používa ju značné percento návštevníkov a len málo z nich sa rozhodne napísať mail, navyše so skopírovanými údajmi, čo však vedie ku vzniku komunikačného šumu (je nutné zistiť, čo malo byť skutočným obsahom mailu). Iste, pridať ďalšie pole v štýle „Spracovať výsledok a odoslať ho na mail“ je záležitosť chvíľky, ja však tentoraz neprogramujem e-mailový formulár, ale kalkulačku a potrebujem ju udržať od mailu ako úplne nezávislú entitu.

K riešeniu pôvodného problému: Podarilo sa mi vďaka niekoľkým návodom dosiahnuť istý pokrok a obsah políčka označiť. Nepríjemné je však, že po nájdení myšou na input sa síce obsah inputu označí, ale zároveň sa odznačí akýkoľvek predtým označený text.

Živá ukážka aktuálneho kódu.
Keeehi
Profil
lionel messi:
Ta živá ukázka se musí uložit. Je tam na to tlačítko. Takto my nic nevidíme.

Samozřejmě pokud se jedná jen o kalkulačku, tak je to v pořádku. Mě to z toho popisu spíš přišlo jak špatně navržený objednávkový formulář.
lionel messi
Profil
Keeehi:
Takto my nic nevidíme.
Ďakujem za upozornenie. Prikladám ešte raz.

Živá ukázka
Chamurappi
Profil
Reaguji na lionela messiho:
Šlo by mít v místě, kde jsou <input>y, jen obyčejné <span>y, do nichž by se kopírovala hodnota <input>ů při změně a které by byly těmi <input>y překryté. Když by chtěl uživatel označit celou větu, označil by jen text s kopiemi value, protože označování se řídí pořadím v kódu (respektive v DOMu) a ne tím, co je kde vidět.

približne aká veľká časť návštevníkov prezerá stránky s vypnutými skriptmi
Obvykle se mluví o číslu kolem jednoho procenta. Není snadné to změřit přesně.
Keeehi
Profil
lionel messi:
A co takto: Živá ukázka

1) Formulář je defaulně skrytý, takže uživatel je "nucen" kopírovat textovou informaci.
2) Než jsem to stihl dodělat, tak už to Chamurappi popsal, aspoň máte kostru implemenace.

EDIT: zase jsem zapomněl upozornit na to, že pro účely rychlého vytvoření ukázky jsem použil jQuery takže tento příklad nemusí správně fungovat ve starších prohlížečích. Nezapomeň si tedy zkontolovat podporu v prohlížečích které chceš podporovat, případně to upravit, aby to fungovalo i v nich. Nicméně CSS o které ti šlo asi přředevším by mělo být funkční i v hodně starých prohlížečích.
Chamurappi
Profil
Reaguji na Keeehiho:
Tvá ukázka nefunguje ve starším Exploreru (nejspíš proto, že používáš hloupou verzi jQuery).

tak už to Chamurappi popsal, aspoň máte kostru implemenace
Já popsal něco jiného. Mé řešení skoro nepoužívá JS (stačí onchange="něco.innerHTML = this.value") a funguje víceméně všude.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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