Skocz do zawartości


[js] Enter w formularzu, który nie wysyła go


2 odpowiedzi w tym temacie

#1 dj.drezyna

    Pomocna dłoń

  • Super użytkownicy
  • 154 Postów:

Napisano pią, 01 mar 2013 - 18:00

Mam oto taki kod zamieszczony poniżej. I co mam zrobić by po wciśnięciu przycisku enter formularz nie wysyłał się tylko jak to jest w kodzie, ustawił pole value inputa na 'Wcisnąłem enter...'? Czyli żeby formularz był wysłany ale dopiero po kliknięciu w przycisk wyślij, albo po wciśnięciu entera ale jak nie jest zaznaczone pole inputa typu text.

W załączonym przykładzie pokazuję też, że korzystam z zatrzymania propagacji oraz zachowania domyślnego i nie działa to tak jak powinno i jest opisane wyżej.
Kod JS

function zdarzenie() {

var tekst = document.getElementById('tekst');
tekst.onkeyup = function(zda) {
zda.stopPropagation();
zda.preventDefault();
if (zda.keyCode == 13) {
tekst.value = 'Wcisnąłem enter...';
}
};

}

Kod HTML

<body onload="zdarzenie();">
<form action="./?wyslano=tak" method="get">
<input type="text" name="tekst" id="tekst" />
<input type="submit" value="Wyślij" />
</form>
</body>


#2 dj.drezyna

    Pomocna dłoń

  • Super użytkownicy
  • 154 Postów:

Napisano pią, 01 mar 2013 - 18:27

Tak to już chyba jest, że dopóki nie napiszę posta na tym forum mózg nie wypracuje rozwiązania.
W każdym razie trzeba to zrobić w następujący sposób:

function zdarzenie() {

var tekst = document.getElementById('tekst');
tekst.onkeydown = function(zda) {//zmieniamy z keyup na keydown
//zda.stopPropagation();//niepotrzebne
if (zda.keyCode == 13) {
zda.preventDefault(); //przenosimy tu
tekst.value = 'Wcisnąłem enter...';
}
};

}

Mam nadzieję, że komuś się przyda!

#3 5corpio

    Guru

  • Super użytkownicy
  • 874 Postów:

Napisano sob, 02 mar 2013 - 00:11

Zanim zauważyłem drugi post zacząłem się właśnie zastanawiać czemu to preventDefault() niby nie działa u ciebie :D