Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Walidacja znaków
Forum PHP.pl > Forum > Przedszkole
tenior
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>
Maxik
Metoda match objektu String: nazwa.match(wyrażenie regularne)
tenior
to mi nic nie mówi
piotrooo89
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. }" />
tenior
nie działa
piotrooo89
u mnie działa
kamil4u
"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ć 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 smile.gif
tenior
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...
kamil4u
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');
}" />
tenior
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
kamil4u
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" smile.gif
tenior
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" smile.gif


dobra ale to co podales nie dziala

może kto¶ pomóc
kamil4u
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>
To jest wersja lo-fi głównej zawarto¶ci. Aby zobaczyć pełn± wersję z większ± zawarto¶ci±, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.