Avatar billede krogstrup Nybegynder
27. april 2001 - 15:40 Der er 5 kommentarer og
1 løsning

Omskrive script

Er der een, der kan omskrive nedenstående script således at der ved tryk på ENTER fremkommer en alert() ???

Hvis det er muligt, må scriptet MEGET gerne skrives således at samtlige inputfelters navne ikke skal skrives ind i init() funktionen, men at der måske i stedet loopes gennem alle inputfelter automatisk....



<SCRIPT LANGUAGE=\"JavaScript1.2\">
<!--
  ns4 = (document.layers)? true:false;
  ie4 = (document.all)? true:false;
  function kp(e) {
    if (ns4) {if (e.which==13) {document.f.pass.focus();}}
    if (ie4) {e=window.event; if (e.keyCode==13) {e.cancelBubble=true;e.keyCode=0;document.f.pass.focus();}}
  }
  function kp2(e) {
    if (ns4) {if (e.which==13) {document.f.submit();}}
    if (ie4) {e=window.event; if (e.keyCode==13) {document.f.submit();}}
  }
  function init() {
    document.f.navn.onkeypress=kp;
    document.f.pass.onkeypress=kp2;
    document.f.navn.focus();
  }

//-->
</SCRIPT>
Avatar billede jakoba Nybegynder
27. april 2001 - 20:09 #1
i head:
<SCRIPT LANGUAGE=\"JavaScript1.2\">
<!--
  ns4 = (document.layers)? true:false;
  ie4 = (document.all)? true:false;

  function kp(e) {
    if (ns4) {if (e.which==13) {document.f.pass.focus();}}
    if (ie4) {e=window.event; if (e.keyCode==13) {e.cancelBubble=true;e.keyCode=0;document.f.pass.focus();}}
  };

  function kp2(e) {
    if (ns4) {if (e.which==13) {document.f.submit();
      alert(\"dette er Netscape og der er trykket enter (eller return)\");
    } }
    if (ie4) {e=window.event; if (e.keyCode==13) {document.f.submit();
      alert(\"dette er Explorer og der er trykket enter (eller return)\");
    } }
  };

  function init() {
    var felm = document.dit_form_navn.elements;
    for (var i=0; felm.length>i; i++ ) {
      if ( felm[i].type==\'text\' || felm[i].type==\'password\' ) {
        felm[i].onKeyPress=kp;
        felm[i].onKeyPress=kp2;  // se kommentar.
        felm[i].focus();
      }
    }
  };

//-->
</SCRIPT>

og i din body kommando:
<body ... onload=\"init()\">

kommentar:
Det giver ingen mening at sætte onKeyPress eventhandleren 2 gange lige efter hinanden.  kp bliver blot overskrevet af kp2.
Funktionen kp vil aldrig blive kaldt.

Hvad er formålet med scriptet?

mvh JakobA
Avatar billede krogstrup Nybegynder
27. april 2001 - 20:49 #2
At når en bruger trykker på ENTER i den tro at det bringer ham videre til næste felt, skal han blot have af vide at sådan fungerer det ikke !
Avatar billede jakoba Nybegynder
27. april 2001 - 20:59 #3
Pt virker det sådan at når en bruger trykker enter
bliver din form submittet. Prøv med:

  i head:
<SCRIPT LANGUAGE=\"JavaScript1.2\">
<!--
  ns4 = (document.layers)? true:false;
  ie4 = (document.all)? true:false;

  function kp(e) {
    if (ns4) {if (e.which==13) {document.f.pass.focus();
      alert(\"dette er Netscape og der er trykket enter (eller return)\");
    }  }
    if (ie4) {e=window.event; if (e.keyCode==13) {
      alert(\"dette er Explorer og der er trykket enter (eller return)\");
      e.cancelBubble=true;
      e.keyCode=0;document.f.pass.focus();
    }  }
  return true;
  };

  function kp2(e) {
    if (ns4) {if (e.which==13) {document.f.submit();
      alert(\"dette er Netscape og der er trykket enter (eller return)\");
    } }
    if (ie4) {e=window.event; if (e.keyCode==13) {document.f.submit();
      alert(\"dette er Explorer og der er trykket enter (eller return)\");
    } }
  };

  function init() {
    var felm = document.f.elements;
    for (var i=0; felm.length>i; i++ ) {
      if ( felm[i].type==\'text\' || felm[i].type==\'password\' ) {
        felm[i].onKeyPress=kp;
        felm[i].focus();
      }
    }
  };

//-->
</SCRIPT>

og i din body kommando:
<body ... onload=\"init()\">

mvh JakobA
Avatar billede krogstrup Nybegynder
28. april 2001 - 09:35 #4
Nedenstående kan jeg få til at fungere, men init() funktionen som automatisk skulle lave en onKeyPress for alle min form elementer kan jeg IKKE få til at fungere - og det ville selvfølgelig være dejligt. Så jeg ikke skal indsætte onKeyPress manuelt i alle felterne....


<html>

<head>
<SCRIPT LANGUAGE=\"JavaScript1.2\">
ie4 = (document.all)? true:false;
function kp(e) {
    if (ie4) {e=window.event; if (e.keyCode==13) {
        alert(\"dette er Explorer og der er trykket enter (eller return)\");
        e.cancelBubble=true;
        e.keyCode=0; }  }
  return true;
};
</SCRIPT>
</head>

<body>

<form action=\"test\" method=\"post\" name=\"f\">
<input type=\"text\" onKeyPress=\"kp();\">
</form>

</body>
</html>


NB: Jeg har kun brug for at scriptet virker i IE 4+ som du kan se...
Avatar billede jakoba Nybegynder
28. april 2001 - 14:16 #5
Denneher virker ok for mig: ( IE4, NS4.7 ) ikke i NS6.

http://hjem.get2net.dk/Jakob.Aggernaes/temp/exp68238.html

mvh JakobA
Avatar billede krogstrup Nybegynder
29. april 2001 - 14:06 #6
Perfekt !

Tak skal du ha´ :-)
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