Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Ucina ostatnią literę w onkeyup
Forum PHP.pl > Forum > Przedszkole
maverickoti
  1. var oSpan = document.getElementById( 'counter' );
  2. oSpan.innerHTML = ( ( tab.value.length ) ) +'/' + max;
  3. if ( tab.value.length = max )
  4. {
  5. input = tab.value.substring(0,max - 1);
  6. tab.value = input;
  7. }
  8. <input name="new_pesel" id="new_pesel" type="text" id="comment" onkeyup="SignLimit(this,11);" required/>
  9. <small>Wpisano: <strong><span id="counter">0/11</span></strong></small>
  10. <script type="text/javascript"><!--
  11. document.getElementById('new_pesel').onchange = function(){
  12. var new_pesel = this.value;
  13. var wzor = /[0-9]{11}/
  14. if (!wzor.test(new_pesel)) { //tutaj mamy zmieniony warunek
  15. this.className = "error";
  16. return false;
  17. } else {
  18. this.className = '';
  19. return true;
  20. }
  21. }
  22. // --></script>


Powyżej wkleiłem prosty kodzić, dzięki któremu w formularzu możemy wpisać PESEL. Jak wiadomo PESEL w Polsce składa się z 11 cyfr. Aby uzytkownik się nie pomylił wstawiłem poza wyrażeniem regularnym z wartością zmiennej var wzor = /[0-9]{11}/ skrypt w JavaScript odliczający ilość wpisanych znaków.

Problem tkwi w tym, żę wpisując ostatnia cyfrę (11) pojawia mi się na ułamek sekundy, poczym zostaje ucięta i w komórce input znajduje się 10 cyfr.


Czy ktoś spotkał się już z takim problemem?
fate
DAJ 12 i bedzie Ci zkracało do 11 jak chcesz
masz max-1 a max to pewnie 11
maverickoti
usunięcie "-1" nic nie zmienia.
Ze zwiększeniem zakresu na 12 to dobry pomysł, ponieważ, nie dochodzimy do maxa i nic nie znika po kliknięciu. Tylko przy zliczaniu jest napisane 0/12 a nie 0/11. Myślałem, by to rozwiązać bardziej składniowo poprawnie, niż poprostu ominąć. W sumie nie mam pojęcia dlaczego tak się dzieje. Napisałem to na przykładzie tutoriala z kanału youtube "P jak programowanie". Tam nie ma takiego problemu:(

Sprawdzałem na trzech przeglądarkach i ciągle ten sam problem:(
Damonsson
Zrób na jsfiddle.
maverickoti
Dzięki za pomoc. Chodziło o "-1". Poprawiłem funkcje i teraz działa.
  1. function SignLimit(tab,max){
  2. var oSpan = document.getElementById( 'counter' );
  3. oSpan.innerHTML = ( ( tab.value.length ) ) +'/' + max;
  4. if ( tab.value.length = max )
  5. {
  6. input = tab.value.substring(0,max);
  7. tab.value = input;
  8. }
  9. }
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.