Hogyan ellenőrizzem hogy a textareába írtak e vagy sem? (részletek a leírásbhan)
Szeretném leellenőrizni lehetőleg ajaxban hogy írtak e a comment formba.
Ha nem, akkor elküldéskor írja ki a program,töltés nélkül, a comment form alá, hogy adj meg valami szöveget,ezt pedig valami piros háttérrel tegye meg.
Ha sikeres a szöveg bevitel,írja ki hogy a küldés sikeres.
Wordpress comment formról van szó,más comment plugint nem akarok használni mert van pár függvény ami a jelenlegihez kötődik.
Jelenleg phpban ellenőrzi le a word press van e comment vagy nincs,ami külön oldalon nyílik meg s nem szép.
Nem túl bonyolult, javascript kell hozzá (az ajax csak egy technika, nem nyelv).
Én úgy szoktam csinálni hogy a form HTML tag, onsubmit propertyjébe kerül egy javascript függvényhívás. Ez a függvény dönti majd el hogy volt-e szöveg a textarea-ban vagy sem. Kóddal egyszerűbb lesz megérteni. Itt a html rész:
<form method="POST" action="/test/" onsubmit="return handle_form_send(this);">
<textarea name="szovegdoboz">
(Bocsi, kettévágtam véletlenül)
<input type="submit">
</form>
Az onsubmit-ban azért kell visszaadni a meghívott függvény visszatérési értékét, mert ha az false, akkor nem megy végbe a POST, és nem töltődik újra az oldal (és kiírhatod helyette a hibaüzeneted). A függvény argumentumául adott this majd a kitöltött form-ra mutat, így a függvényből könnyen el lehet érni az inputokat.
A JS így néz ki:
function handle_form_send(_form){
if (_form.szovegdoboz.value == ""){
alert('Ures textarea');
return false;
}
return true;
}
A textarea-nek name-t adtam a html részben, ezért lehet így elérni az if()-ben. A többi szerintem már egyértelmű innen. Csak arra kell figyelni hogy térjen vissza a függvény vmilyen logikai értékkel.
A végtelenségig lehet még cifrázni. Ha nem akarod egyáltalán hogy újratöltődjön az oldal, és a POST is ajax-szal menjen le, akkor az onsubmitnál meghívott függvény egyszerűen mindig térjen vissza false-al, és kézzel elvégzed az ajax kérést.
Gondoltam hogy nem alert()-be, csak példának írtam oda. Ha megvan a div amiben a hibaüzenetet meg akarod jeleníteni, akkor egyszerűen beleírod az elágazás igaz ágába (ha az én kódomat tekintjük).
Ha nem használsz semmilyen javascript frameworköt, akkor pl így:
var div_hibauzenet = document.getElementById("hibauzenet_doboza")
div_hibauzenet.innerHTML = "Üres mező!";
Ha használsz, pl jQuery-t, akkor sokkal egyszerűbb:
$("#hibauzenet_doboza").html("Hiba");
Így gondoltad?
Mert így nekem nem működik:S
<html>
<head>
<script src=" [link]
<script>
function handle_form_send(_form){
if (_form.szovegdoboz.value == ""){
return false;
}
return true;
$("#hibauzenet_doboza").html("Hiba");
}
</script>
<title>gyak</title>
</head>
<body>
<form method="POST" onsubmit="return handle_form_send(this);">
<textarea name="szovegdoboz"></textarea><input type="submit"> <br>
<div id="hibauzenet_doboza"></div>
</form>
</body>
</html>
Nemnem. A return után felesleges tenni akármit is, addigra már visszatértünk a függvényből. A hibát akkor akarod kiírni amikor üres a textarea, tehát az if() azon ágába kell, amibe akkor ugrunk, ha 0 hosszú ("") string a textarea értéke. Kóddal tehát így:
function handle_form_send(_form){
if (_form.szovegdoboz.value == ""){
$("#hibauzenet_doboza").html("Hiba");
return false;
}
return true;
}
A hozzászólásodból úgy vélem, hogy neked még kicsit nehéz lenne a natív AJAX megoldás, ezért inkább a jQuery-t ajánlanám.
Ezt ajánlom figyelmedbe:
Így el tudod küldeni a szükséges adatokat a feldolgozónak, ami már neked meg is van. A feldolgozott adatokat pedig elkapod, és utána kliens oldalon azt csinálsz vele, amit csak akarsz.
Az előző válaszolók megoldása is használható, de védelmi szempontból semmit sem ér, mivel a szerver ezekben a megoldásokban nincs belekeverve az ellenőrzésbe.
Picikét.
Olyan szinten vagyok, hogy ha látok egy kódot, kb tudom hol kell módosítani, hogy elérjem azt ami nekem kell,pl magyarosítás terén,de magamtól, még sosem sikerült olyan kódot írni,ami működik is:D
A feldolgozó oldal sajnos php.
2 okból nem tudom lecserélni.
1:
A felhasználóknak regisztrál kell, hogy hozzá szólhassanak,ehhez sql parancsok kellenek,amihez én sajnos semmit nem konyítok jelenleg:S
Az előző válaszok elég jók,végülis csak azt vizsgáljuk van e benne szöveg,többit már a php feldolgozó végzi,sajnos újra töltéssel.
De legalább meg van írva a védelme és az sql-hez való kapcsolódás.
2:
Hatalmas munka lenne olyan feldolgozó oldalt írni ami biztonsági szempontból is korrekt és el látja a kívánt feladatot,vagy is hogy újratöltés nélkül elküldi az üzentet.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!