Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript]Ucina ostatnią literę w onkeyup
maverickoti
post
Post #1





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 5.04.2013

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


  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?
Go to the top of the page
+Quote Post
fate
post
Post #2





Grupa: Zarejestrowani
Postów: 824
Pomógł: 106
Dołączył: 14.03.2012
Skąd: Warszawa

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


DAJ 12 i bedzie Ci zkracało do 11 jak chcesz
masz max-1 a max to pewnie 11
Go to the top of the page
+Quote Post
maverickoti
post
Post #3





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 5.04.2013

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


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:(
Go to the top of the page
+Quote Post
Damonsson
post
Post #4





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Zrób na jsfiddle.
Go to the top of the page
+Quote Post
maverickoti
post
Post #5





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 5.04.2013

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


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. }
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: 22.08.2025 - 17:55