Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript] Walidacja znaków
tenior
post
Post #1





Grupa: Zarejestrowani
Postów: 58
Pomógł: 2
Dołączył: 16.11.2008

Ostrzeżenie: (10%)
X----


Mam mały skrypt, chcę aby z formularzu dawał alert jedynie gdy znajdą się w nim znaki: " ' \
Pytanie jak to osiągnąć?
Kod
<script type="text/javascript">
function $( id )
{
    return document.getElementById(id).value;
}

function check_zmien ()
{
  var error = '';
  nazwa = document.getElementById('nazwa').value;
  comment = document.getElementById('comment').value;
  var regex = /^[a-zA-Z0-9ąćęłńóśżźĄĆĘŁŃÓŚŻŹ]{2,25}$/;
  var odp = regex.test(nazwa);
  var regexc = /^[a-zA-Z0-9ąćęłńóśżźĄĆĘŁŃÓŚŻŹ]{0,25}$/;
  var odpc = regexc.test(comment);

    if ( document.getElementById('nazwa').value == '' )
    {
        alert('Nazwa')
        return false;
    }

else if ( document.getElementById('auth').value == 'wybor' )
    {
        alert('Wybierz')
        return false;
    }
    else if (!odp) {
        alert('Nie poprawna nazwa');
                return false;
  }
    else
    {
        return true;
    }
}
</script>
Go to the top of the page
+Quote Post
Maxik
post
Post #2





Grupa: Zarejestrowani
Postów: 726
Pomógł: 129
Dołączył: 10.01.2008
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Metoda match objektu String: nazwa.match(wyrażenie regularne)
Go to the top of the page
+Quote Post
tenior
post
Post #3





Grupa: Zarejestrowani
Postów: 58
Pomógł: 2
Dołączył: 16.11.2008

Ostrzeżenie: (10%)
X----


to mi nic nie mówi
Go to the top of the page
+Quote Post
piotrooo89
post
Post #4


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




a coś takiego:

  1. <input type="text" name="rok" onkeyup="
  2. if (this.value.match(/\\|'/))
  3. {
  4. this.value=this.value.replace(/\\|'/, '');
  5. alert('error zly znak');
  6. }" />
Go to the top of the page
+Quote Post
tenior
post
Post #5





Grupa: Zarejestrowani
Postów: 58
Pomógł: 2
Dołączył: 16.11.2008

Ostrzeżenie: (10%)
X----


nie działa
Go to the top of the page
+Quote Post
piotrooo89
post
Post #6


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




u mnie działa
Go to the top of the page
+Quote Post
kamil4u
post
Post #7





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


"Nie działa", bo ~piotrooo89 zapomniał albo specjalnie dał taki kod(żebyś sam też wykazał się trochę), który sprawdza tylko znaki: ' \, a " sam musisz dopisać (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Pytanie do mistrzów JS:
Kod
if (this.value.match(/\\|\'/))
{
this.value=this.value.replace(/\\|\'/, '');
alert('error zly znak');
}

W tym kodzie skrypt musi 2 razy szukać tego samo wyrażenia - obecnie pisze coś w czym wydajność ma kluczowe znaczenie - szukam sposobu, aby skrypt nie musiał 2 razy robić tego samego - jest jakiś sposób? W tym wypadku może wystarczy zwykły if na replace-a (nie chce mi się sprawdzać w dokumentacji czy replace coś zwraca), ale co w przypadku np.
Kod
zmienna1 = cos.split(wyr);
zmienna2 = cos..match(wyr); //taki przykład na szybko
Macie jakieś pomysły - sorry, że nowego tematu nie założyłem, ale mam nadzieję, że się nie obrazicie, jak podepnę się tutaj (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
tenior
post
Post #8





Grupa: Zarejestrowani
Postów: 58
Pomógł: 2
Dołączył: 16.11.2008

Ostrzeżenie: (10%)
X----


Cytat(piotrooo89 @ 4.05.2009, 13:05:59 ) *
u mnie działa


ok zrobiłem błąd, jednak to nie jest do końca tak jak powinno być, bo jeśli przytrzymasz na klawiaturze to i tak zostanie to wpisane...
Go to the top of the page
+Quote Post
kamil4u
post
Post #9





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


Dodaj modyfikator(tak to się chyba nazywało) g:
Kod
<input type="text" name="rok" onkeyup="
if (this.value.match(/\\|\'/))
{
this.value=this.value.replace(/\\|\'/g, '');
alert('error zly znak');
}" />
Go to the top of the page
+Quote Post
tenior
post
Post #10





Grupa: Zarejestrowani
Postów: 58
Pomógł: 2
Dołączył: 16.11.2008

Ostrzeżenie: (10%)
X----


Cytat(kamil4u @ 4.05.2009, 14:13:02 ) *
Dodaj modyfikator(tak to się chyba nazywało) g:
Kod
<input type="text" name="rok" onkeyup="
if (this.value.match(/\\|\'/))
{
this.value=this.value.replace(/\\|\'/g, '');
alert('error zly znak');
}" />


i ostatni problem jak dodać ten głupi cudzysłów bo nawet jak dodaje: \
Kod
<input type="text" name="rok" onkeyup=\"if(this.value.match(/\\|\'/)){this.value=this.value.replace(/\\|\'/g, '');}\">

to nic to nie daje
Go to the top of the page
+Quote Post
kamil4u
post
Post #11





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


Kod
<input type="text" name="rok" onkeyup="
if (this.value.match(/\\|\'|\"/))
{
this.value=this.value.replace(/\\|\'|\"/g, '');
alert('error zly znak');
}" />
Znak | w wyrażeniach regularnych oznacza "lub" (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował kamil4u 4.05.2009, 19:56:54
Go to the top of the page
+Quote Post
tenior
post
Post #12





Grupa: Zarejestrowani
Postów: 58
Pomógł: 2
Dołączył: 16.11.2008

Ostrzeżenie: (10%)
X----


Cytat(kamil4u @ 4.05.2009, 20:56:23 ) *
Kod
<input type="text" name="rok" onkeyup="
if (this.value.match(/\\|\'|\"/))
{
this.value=this.value.replace(/\\|\'|\"/g, '');
alert('error zly znak');
}" />
Znak | w wyrażeniach regularnych oznacza "lub" (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)


dobra ale to co podales nie dziala

może ktoś pomóc
Go to the top of the page
+Quote Post
kamil4u
post
Post #13





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


Cytat
może ktoś pomóc

Pomoc to nie zrobienie kodu z kogoś prawda? Naprawdę nie jest to trudne..., najprościej to tak(nie powinienem tego robić):
Kod
<input type="text" name="rok" onkeyup="x(this);">

<script>
function x(y){
if (y.value.match(/\\|\'|\"/))
{
y.value=y.value.replace(/\\|\'|\"/g, '');
alert('error zly znak');
}
}
</script>
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 05:16