Najlepszym sposobem jest sprawdzenie wartości wejściowych, zamiast naciśnięty klawisz. Ponieważ istnieją tabulatory, strzałki, backspace i inne znaki, które należy sprawdzić, gdy używasz kodu postaci.
które sprawdzają kod wartość wejściowa użytkownika po naciśnięciu klawisza:
$('#p_first').keyup(function(){
while(! /^(([0-9]+)((\.|,)([0-9]{0,2}))?)?$/.test($('#p_first').val())){
$('#p_first').val($('#p_first').val().slice(0, -1));
}
});
Podczas gdy pętla usunąć ostatni znak, aż wartość wejściowa jest prawidłowy. Regex /^(([0-9]+)((\.|,)([0-9]{0,2}))?)?$/
sprawdza poprawność liczby całkowitej i liczby zmiennoprzecinkowej np. "12,12", "12,1", "12". Ważne jest, aby numer "12." (kropka na końcu) również obowiązuje! W przeciwnym razie użytkownik nie może wprowadzić żadnego okresu.
A następnie przesłać czek regex dla ważnego numeru pływaka ([0-9]{1,2})
zamiast ([0-9]{0,2})
:
$('form').submit(function(e){
if(! /^([0-9]+)((\.|,)([0-9]{1,2}))?$/.test($('#p_first').val())){
$('#p_first').addClass('error');
e.preventDefault();
}
});
Wskazówka: Lepiej umieścić $('#p_first')
do zmiennej.var input = $('#p_first');
która posiada klucz? Podając nieco więcej opisu przyczyny problemu? –
dowolny klawisz ... typ wejścia = tekst ... a użytkownik trzyma na przykład "aaaaaaaaaaaaaa", więc funkcja keyup() nie uruchamia się, dopóki nie przestanie przytrzymywać klawisza "a" –
Dzięki za dostarczenie więcej problemów, myślę moje proponowane rozwiązanie powinno rozwiązać twój problem. –