Skocz do zawartości

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

dj.drezyna

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

Polecane posty

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>

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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!

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

×