To kolejny prosty, przydatny skrypt do walidacji. Skrypt sprawdza, czy ostatnia litera imienia to „a”. Myślę, że spokojnie podziała z polskimi imionami oraz hiszpańskimi (z racji tego, że żeńskie imiona kończą się na „a”).
Prosty skrypt, sprawdza czy ostatnia litera to a, jeśli tak jest, to jest to imię męskie jeśli nie to imię żeńskie. Wyjątkiem będzie imię Kuba (właściwie to powinno być Jakub, ale różnie bywa).
Formularz HTML
<label>Imię:</label> <input class="form-control auto" type="text" id="name" name="name" onchange="check()"/> <br> <label>Nazwisko:</label> <input class="form-control auto" type="text" name="surnamename"/> <br> <label>Płeć</label><br> <input type="checkbox" class="tprice" value="1" id="k"> <i class="fa fa-mars fa-2x" aria-hidden="true"></i> <input type="checkbox" class="tprice" value="1" id="m"> <i class="fa fa-venus fa-2x" aria-hidden="true"></i>
Zastosowałem event onchange. Skorzystałem z Font Awesome do ikon płci.
function check() { if($("#name").val() ) { var name = document.getElementById('name').value; name = name.toLowerCase(); if (name.match(/[a-zA-Z]/i)) { if ((name == "kuba") || (name == "bonawentura") || (name == "kosma") || (name == "jarema") || (name == "barnaba") || (name == "zawisza ")) { $('#m').prop("checked", true).focus() $("#k").prop("checked", false).focus(); } else if (name.substring(name.length-1) == "a") { $('#k').prop("checked", true).focus() $("#m").prop("checked", false).focus(); } else if (name.substring(name.length-1) != "a") { $('#m').prop("checked", true).focus() $("#k").prop("checked", false).focus(); } } } }
Funkcja pobiera nam wartość inputu o ID name, zmienia litery na małe – dla naszych wyjątków. Później sprawdzamy czy wartość składa się tylko z liter – czy na pewno jest to imię. Następnie sprawdza nasz wyjątek „kuba” i oznacza płeć (lub odznacza przeciwną jeśli została wcześniej zaznaczona). Jeśli wartość jest inna niż kuba sprawdza czy ostatnia litera stringa to „a”, jeśli tak to zaznacza odpowiednią płeć (i odznacza odpowiednią).
Proste prawda? 🙂
Stworzyłem też funkcję dla samego PHP.
Funkcja PHP
function checkSex($name) { if(preg_match('#^[a-ząćęłńóśźżĄĆĘŁŃÓŚŹŻ ]*$#is', $name)==true) { $name = strtolower($name); if(($name == "kuba") || ($name == "bonawentura") || ($name == "kosma") || ($name == "jarema") || ($name == "barnaba") || ($name == "zawisza")) $sex = "Imię męskie"; else if(substr($name, -1)=="a") $sex = "Imię żeńskie"; else if(substr($name, -1)!="a") $sex = "Imię męskie"; else $sex = "?"; } else { $sex = "Musisz podać imię"; } return $sex; }
GitHub
Zastosowałeś to u siebie na stronie? Pochwal się w komentarzu adresem swojej strony www.
Moja praca zaoszczędziła Ci dużo czasu? Wesprzyj mnie poprzez dotację BTC 14Qaw1shp8ccg2n5jxzHD1DSfyTkYoKNqe Znajdziesz również przycisk „wesprzyj” w panelu bocznym na blogu.
Edit
Swoją propozycję podesłał mi Piotr, w która jest o wiele prostsza. Dodaję za jego zgodą 🙂
function checkSex($name) { if(preg_match('#^[a-ząćęłńóśźżĄĆĘŁŃÓŚŹŻ]*$#is', $name)==true) { $name = strtolower($name); $exclude = ["kuba","bonawentura","kosma","jarema", "barnaba","zawisza"]; if (array_search($name,$exclude) !== false || substr($name, -1)!='a') { return "Imię męskie"; } return "Imię żeńskie"; } return "Musisz podac imię"; }