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.

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