• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Walidacja email JS

Object Storage Arubacloud
0 głosów
1,547 wizyt
pytanie zadane 8 czerwca 2015 w JavaScript przez Mizukage Pasjonat (21,750 p.)

Mam problem z implementacja jednej funkcji do mojejgo skryptu walidacji 

fragment kodu

var $name = $('#name');
var $email = $('#email');
var $msg = $('#msg');


$('form span').hide();


function nameVal() {
  return $name.val().length > 1;
}

function emailVal() {
   return $email.val().length >= 8;
}

function msgVal() {
  return $msg.val().length > 1;
}

function sendAllow() {
  return nameVal() && emailVal(email) && msgVal();
}


function nameSpan() {
  if(nameVal()) {
    $name.next().hide();
  } else {
    $name.next().show();
  }
}

function emailSpan() {
  if(emailVal()) {
    $email.next().hide();
  } else {
    $email.next().show();
  }
}

function msgSpan() {
  if(msgVal()) {
    $msg.next().hide();
  } else {
    $msg.next().show();
  }
}

function isDisabled() {
  $('#submit').prop('disabled', !sendAllow());
}

function buttonReady() {
  if(sendAllow()) {
    $('#submit').removeClass('wylaczony');
  } else {
    $('#submit').addClass('wylaczony');
  }
}


$name.keyup(nameSpan).keyup(isDisabled).keyup(buttonReady);
$email.keyup(emailSpan).keyup(isDisabled).keyup(buttonReady);
$msg.keyup(msgSpan).keyup(isDisabled).keyup(buttonReady);

isDisabled();

 

No a chce zamiast emailVal wrzucić tą funkcje

function emailVal(email) {
    var re = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
    return re.test(email);
}

 

Tylko cos mam problem ze spanem i funkcja SendAllow

 

1 odpowiedź

+1 głos
odpowiedź 8 czerwca 2015 przez Comandeer Guru (600,810 p.)
wybrane 8 czerwca 2015 przez Mizukage
 
Najlepsza
Zacznijmy od tego, że niekoniecznie ten regex dobrze waliduje maile (np. nie przepuści polskich znaków).

Co do problemu - co znaczy "mam problem"? Konsola coś rzuca? Mógłbyś przygotować przykład na jsfiddle?
komentarz 8 czerwca 2015 przez Mizukage Pasjonat (21,750 p.)
Problem widze po tym ze mimo kilku modyfikacji ani moj span nie znika ani button nie zostaje odblokowany czyli nie jest spelniony ten warunek.
Do tego nie rozumiem return re.test(email);

na jsfiddle chyba to nie dziala przez to że span jest sprawdzany przez .keyup()
komentarz 8 czerwca 2015 przez Comandeer Guru (600,810 p.)

A dołączyłeś na jsfiddle jQuery?

Do tego nie rozumiem return re.test(email); 

re to wyrażenie regularne. re.test to metoda, która sprawdza czy podany jej string pasuje do wzorca. Zamiast email powinieneś podstawić $email.val()

Co do keyup - w teorii powinieneś używać inputhttps://mathiasbynens.be/notes/oninput

No i zamiast przypinać 3 razy oddzielnie można przypiąć raz funkcję anonimową, która odpali całość.

Ostatecznie wychodzi coś takiego: http://jsfiddle.net/Comandeer/y3s9m6r7/ 

nameSpanemailSpan i msgSpan są bardzo podobne - może warto z nich zrobić funkcję uniwersalną?

komentarz 8 czerwca 2015 przez Mizukage Pasjonat (21,750 p.)
Dzieki, odpocznie i to ogarne, i dam znać w temacie.
komentarz 8 czerwca 2015 przez Mizukage Pasjonat (21,750 p.)
edycja 8 czerwca 2015 przez Mizukage

"No i zamiast przypinać 3 razy oddzielnie można przypiąć raz funkcję anonimową, która odpali całość.

Ale w Twoim kodzie z .on też jest podpiete oddzielnie.

Co do jednej funkcji dla 'span' to chyba i tak bede musial sie odniesc do tych 3 funckji 

 

komentarz 8 czerwca 2015 przez Comandeer Guru (600,810 p.)

Ale w Twoim kodzie z .on też jest podpiete oddzielnie.

Chodziło mi to, że Ty dla jednego pola wywoływałeś kilka razy keyup, natomiast u mnie jest tylko jedno on 

komentarz 9 czerwca 2015 przez Mizukage Pasjonat (21,750 p.)

To sie zgadza, a co to zastapienia tamtych trzech identycznych funkcji jedną nic nie wymysliłem. Jak tu sie odwołać z if dla trzech rożnych zmiennych, no bo dalej to pewnie cos w stylu

$(this).next().show()

 

komentarz 9 czerwca 2015 przez Comandeer Guru (600,810 p.)
Szedłbym w coś takiego: http://jsfiddle.net/Comandeer/y3s9m6r7/1/

IMO bardziej rozwijalne na przyszłość
komentarz 9 czerwca 2015 przez Mizukage Pasjonat (21,750 p.)
Rano do tego usiąde bo widze ze kod sie skomplikował :)

Podobne pytania

0 głosów
2 odpowiedzi 441 wizyt
pytanie zadane 21 maja 2015 w JavaScript przez ArturB Mądrala (6,060 p.)
0 głosów
2 odpowiedzi 273 wizyt
pytanie zadane 13 listopada 2017 w HTML i CSS przez manjaro Nałogowiec (37,390 p.)
0 głosów
3 odpowiedzi 264 wizyt
pytanie zadane 16 kwietnia 2016 w Sieci komputerowe, internet przez CzikaCarry Szeryf (75,340 p.)

92,555 zapytań

141,402 odpowiedzi

319,541 komentarzy

61,939 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...