Avatar billede dennisbjorn Juniormester
24. september 2014 - 13:32 Der er 1 kommentar og
1 løsning

Kalde funktion med tab

Hej,

Jeg har dette script med to funktioner:

Den første funktion tilføjer dynamisk input elementer i formen (der tilføje ekstra felter).
Den anden funktion kalder den første funktion, når et felt har fokus og man taster enter.

Jeg vil bare gerne kalde funktionen med tab i stedet for enter.
Har prøvet at udskifte event.keyCode==13 med event.keyCode==9 uden resultat...?

<html>
<head>
  <script language="JavaScript" type="text/javascript">
    var counter = 1;
    function addInput(divName){
          var newdiv = document.createElement('div');
          newdiv.innerHTML = "<input type='text' width='130px' maxlength='12' name='serial' onkeypress='checkTabPress(event);'> " + (counter + 1) + ".";         
          document.getElementById(divName).appendChild(newdiv);
          counter++;   
    }
   
    function checkTabPress(e){
    if (event.keyCode==13)
    addInput('dynamicInput');
    }   
   
  </script>
</head>
<body>
       
<form method="post">
<div id="dynamicInput" style="text-align:left;">
  <input type="text" name="serial[]" onkeypress="checkTabPress(event);">&nbsp;1.
</div>
</form>

</body>
</html>
Avatar billede conz Juniormester
24. september 2014 - 19:07 #1
Du skal have e.PreventDefault() som det første i if-sætningen i checkTabPress. Jeg mener også at tab burde være 9.
Avatar billede dennisbjorn Juniormester
25. september 2014 - 07:46 #2
kunne umiddelbart ikke få PreventDefaut() til at virke - men det lykkedes med event.returnValue=false således:



<html>
<head>
  <script language="JavaScript" type="text/javascript">
    var counter = 1;
    function addInput(divName){
          var newdiv = document.createElement('div');
          newdiv.innerHTML = "<input type='text' width='130px' maxlength='12' name='serial' onKeyDown='CheckTabPress(this);'> " + (counter + 1) + ".";         
          document.getElementById(divName).appendChild(newdiv);
          counter++;   
    }
   
    function CheckTabPress(el){
      if (event.keyCode==9){
          addInput('dynamicInput');   
          document.forms.serialform.counter.focus();      
          event.returnValue=false;             
      }
    }
  </script>
</head>
<body>
       
<form method="post" name="serialform">
<div id="dynamicInput" style="text-align:left;">
  <input type="text" name="serial[]" onKeyDown="CheckTabPress(this);">&nbsp;1.
</div>
</form>

</body>
</html>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester