Autor Zpráva
pavelrejha
Profil
Zdravím,
můžete mi prosím poradit jak udělat to, aby když bude v poli "zprava" určité písmeno, třeba "x" aby se nedal odeslat formulář? Děkuji.

<script>
function kontrolaDat(vstup){
    zadanaHodnota = vstup.email.value;
    if( zadanaHodnota.indexOf("@") == -1)
        {alert("Ve Vašem e-mailu chybí zavináč!"); return false;}
        zadanaHodnota = vstup.email.value;
    if( zadanaHodnota.indexOf(".") == -1)
        {alert("Ve Vašem e-mailu chybí tečka!"); return false;}
    else return true;
}
</script>

<form action="posli.php" method="post" onsubmit="return kontrolaDat(this)">
<p>Váš e-mail:<br>
<input name="email"></p>
<p>Vaše jméno a příjmení:<br>
<input name="predmet"></p>
<p>Vaše zpráva:<br>
<textarea name="zprava" rows="8">
x </textarea></p>
<p><input type="submit" value="Odeslat"></p>
</form>
Tomášeek
Profil
pavelrejha:
Neobsahuje x asi není to, co chceš kontrolovat, neprošlo by potom ani chtěné slovo s „x“ uprostřed (konexe, Excel, ...).

Pokud opravdu chceš kontrolovat existenci „x“, pak to bude totéž, jako kontrola existence „@“ v emailu. To už tam máš, měl bys být schopný to udělat dle tohoto vzoru.

Pokud chceš kontrolovat, zda do textarey někdo něco vepsal, tak porovnávej hodnotu (.value) s původní hodnotou (.defaultValue). Případně použij placeholder, namísto vkládání defaultního obsahu do textarey.
pavelrejha
Profil
Já právě nechci kontrolovat co tam není, ale naopak...

Potřebuji JS, který by blokoval např. sprosté slova, které bych si tam předem nadefinoval a pokud by je textarea obsahovala, tak by formulář nešel odeslat.
lionel messi
Profil
Metóda indexOf vracia pre reťazec x (v štýle x.indexOf(y);) hodnotu -1, ak neobsahuje reťazec y, a hodnotu väčšiu než -1 (jeho pozíciu v rámci reťazca x, čísluje sa od 0), ak ho obsahuje.
pavelrejha
Profil
Bylo by možné poslat příklad jak to vypadá?
Keeehi
Profil
pavelrejha:
Základem je si uvědomit, že v tom řetězci v indexOf nemusí být jen jeden znak, ale klidně tam můžeš dát celé slovo.

Nicméně, chudák sekunda. Tipuji že to bude nejčastější oběť primitivních filtrů sprostých slov.
Dobrý automatický filtr sprostých slov podle mě udělat nejde. A to jak kvůli false positive (sekunda) tak i false negative (kunnda, dá se to ale i lépe). Osobně bych nechal odeslat vše. A pak na serveru si to skontroloval primitivně oproti seznamu a označit si podezřelé příspěvky true postive i false positive pro následnou ruční kontrolu někým zodpovědným. Kvůli false negative bych přidal pro běžné uživatele možnost nějaký příspěvek nahlásit. Stalo by se s ním to samé. Byl by určen ke kontrole někým zodpovědným.

Ještě pro jistotu, z pohledu filtru sprostých slov:
true positive - příspěvek opravdu obsahuje sprosté slovo
true negative - příspěvek je v pořádku
false positive - příspěvek je v pořádku ale filtr ho omylem označí
false negative - v příspěvku je sprosté slovo které filtr nedokáže najít
pavelrejha
Profil
Hmm, a já myslel že napíšu do js 1 slovo co tam nemá být a hotovo....
lionel messi
Profil
pavelrejha:

Možno ťa zaujme aj debata o opodstatnení takéhoto filtra.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0