Pereiti prie turinio

Paspaudus "Enter" kursoriaus perkėlimas į kitą langelį


Rekomenduojami pranešimai

Sveiki,

 

Visiškai nenusimanau apie JS, o reikia formoje padaryti, kad suvedus į pirmą laukelį informaciją ir paspaudus "Enter", kursorius peršoktų į kitą langelį kaip su "Tab" mygtuku. Radau keletą sprendimų, bet nesugebu jų kažkaip pritaikyti. Tarkim, kad ir šitas:

 

<!DOCTYPE HTML>
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   <title>XXX</title>
</head>

<body>
   <script>
       function press(event) {
           if (event.keyCode == 13) {
               document.getElementById('input2').focus();
           }
       }
   </script>

   <input id="input1" type="text" onkeypress="press(event)" /><br />
   <input id="input2" type="text" onkeypress="press(event)" /><br />
   <input  id="submit" type="submit" value='Submit' /><br />
</body>
</html>

 

Šita forma veikia, bet jeigu laukelius įterpiu į formą "<form></form>", tai viskas nebeveikia. Išbandžiau keletą skirtingų pavyzdžių ir visur ta pati problema. Kas galite padėti išspręsti šitą problemą? O gal turit kažką panašaus pasirašę?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Kai inputai būna formoje, paspaudus enter paprastai forma išsiunčiama. Tiesiog įdėk tokią eilutę event.preventDefault(); ji sustabdo numatytus evento veiksmus

function press(event) {
           if (event.keyCode == 13) {
	event.preventDefault();
               document.getElementById('input2').focus();
           }
}

Redagavo Gugiss
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Kai inputai būna formoje, paspaudus enter paprastai forma išsiunčiama. Tiesiog įdėk tokią eilutę event.preventDefault(); ji sustabdo numatytus evento veiksmus

function press(event) {
           if (event.keyCode == 13) {
	event.preventDefault();
               document.getElementById('input2').focus();
           }
}

 

Super. O kaip dar būtų galima patobulinti, kad peršoktų ne į konkretų lauką, o per visus, kiek jų pridėčiau?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Super. O kaip dar būtų galima patobulinti, kad peršoktų ne į konkretų lauką, o per visus, kiek jų pridėčiau?

Su DOM funkcijomis susirandi, kuris input elementas yra po to, dėl kurio suaktyvuotas click (event.target) ir darai focus jam :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Patarčiau naudot jQuery:

 

<!DOCTYPE HTML>
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   <title>XXX</title>
   <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
</head>
<body>
   <form id="forma">
<input id="input1" type="text" /><br />
<input id="input2" type="text" /><br />
<input  id="submit" type="submit" value='Submit' /><br />
   </form>

   <script>
$(document).ready(function(){
    $('#forma input, #forma textarea, #forma select').keydown( function(e) {
	if(e.which == 13) {
	    e.preventDefault();
	    var next = $(this).closest('form').find('input:visible, select, textarea');
	    next.eq( next.index(this)+ 1 ).focus();
	}
    });
});
   </script>
</body>
</html>

Redagavo Gugiss
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...