Jak napisać wyrażenie regularne do sprawdzenia, czy wpisano ciąg liter (bez cyfr)?
Napisałem taki kod:
<script type="text/javascript"> function check() { var blad = ""; // komunikat o błędzie var flaga = 0; // czy wszystko jest w porządku //sprawdzenie, czy nie ma cyfr if(!(document.forms[0].elements[4].value).match(/^([a-zA-Z]+)+$/)) { // wstawienie kursora document.forms[0].elements[4].focus(); blad += "Nazwa nie może zawierać cyfr!\n"; flaga = 1; } // jeżeli są błędy to komunikat - dla ułatwienia ponumerowałem linijki 119: if(flaga == 1) 120: { 121: alert(blad); 122: return false; 123: } 124: else 125: return true; } </script>
Formularz ma akcję: onsubmit="chceck();".
Wszystko działa poprawnie - to znaczy, jak są cyfry, wyświetla się komunikat, jednak w przeglądarce Firefox w konsoli JavaScript wyswietla się błąd:
Kod
Błąd: [Exception... "'Nie udzielono uprawnieD do odczytania wBa[ciwo[ci XULElement.selectedIndex'
when calling method: [nsIAutoCompletePopup::selectedIndex]"
nsresult: "0x8057001e (NS_ERROR_XPC_JS_THREW_STRING)"
location: "JS frame :: http://localhost/PSI/skrypt.js :: checkClient :: line 121"
data: no] Plik źródłowy: http://localhost/PSI/skrypt.js Wiersz: 121
when calling method: [nsIAutoCompletePopup::selectedIndex]"
nsresult: "0x8057001e (NS_ERROR_XPC_JS_THREW_STRING)"
location: "JS frame :: http://localhost/PSI/skrypt.js :: checkClient :: line 121"
data: no] Plik źródłowy: http://localhost/PSI/skrypt.js Wiersz: 121
wiersz wskazuje na linijkę 121, więc alert(blad).
Jeżeli nie wprowadzę powyższego wyrażenia, wszytsko przebiega poprawnie (bezbłędnie)...
Co jest źle?
---------------------------
Błąd juz znalazłem.... (dla ciekawych)
Otóż nie mogę dać focusa przed alertem (w uproszczeniu), dlatego najpierw deklaruję zmienną, która pamięta, które pole ma być aktywne po komunikacie, następnie daję alert i metodę focus().