Używam jQuery, aby zrobić kalkulator. Problem polega na tym, że na otoczeniu nazywam funkcję obliczania, która oblicza i zwraca wartość. Jeśli jednak zmieniam wartość w polu tekstowym, i ponownie naciśnij Keydown, strona odświeża i wszystko jest puste.

Nie chcę, aby strona do odświeżenia, jeśli użytkownik zmienia wartość w polu tekstowym. Powinien ponownie wywołać funkcję obliczania i powrócić i wyświetlić nowy wynik.

To jest kod:

lgpm.keydown(function(event){

            var keycode = (event.keyCode ? event.keyCode : event.which);
            if(keycode == '13'){
                if (formValidate()){
                    event.preventDefault();
                    return false;
                }
                else {
                calculateMet();
                }
            }
            event.stopPropagation();
        });
0
input 1 listopad 2011, 15:50

3 odpowiedzi

Najlepsza odpowiedź

Metoda event.preventDefault() musi zostać wywołana, gdy klawisz Enter jest naciśnięty - w przeciwnym razie zostanie przesłany formularz - spróbuj tego

lgpm.keydown(function(event){

        var keycode = (event.keyCode ? event.keyCode : event.which);
        if(keycode == '13'){
            event.preventDefault();
            if (formValidate()){
                return false;
            }
            else {
            calculateMet();
            }
        }
        event.stopPropagation();
    });
1
Rob W 1 listopad 2011, 11:54

Spróbuj dodawać event.stoppropagation () after event.preventdefault ()

0
Rohan 1 listopad 2011, 11:54

Zmień swoje ciało do:

if(keycode == '13'){                                                                                              
   if (formValidate()){                                                                                          
      event.preventDefault();                                                                                   
   } else {                                                                                                      
      calculateGravelMetric();                                                                                   
   }                                                                                                             
}                                                                                                                 
return false;

... więc domyślna obsługa będzie zawsze zapobiegać

0
Dangelov 1 listopad 2011, 11:57