Avatar billede hangaard Nybegynder
21. november 2001 - 11:36 Der er 2 kommentarer og
1 løsning

Uønsket submit ved tryk på [enter]

På et input-text felt har jeg brugt onKeyPress. Her kører jeg så en js-funktion som kører en funktion submitForm(), hvis der blev trykket på [enter].

submitForm() køres også når man trykker på en knap-gif (<a>[KNAP]</a> - ikke form-element).

submitForm() checker om felt.value er OK. Hvis JA så køres form.submit() ellers gøres ingenting.

Problemet er når submirForm() bliver kørt efter jeg har trykket [enter] og felt.value ikke er OK. Her bliver min form submitted alligevel selvom form.submit() aldrig bliver kørt.
Hvis jeg bruger [KNAP] og felt.value ikke er OK bliver formen ikke submitted, så det er altså kun ved [enter] at den er gal.

Sådan ser koden ud:

function knapNed() {
  if (event.keyCode == 13)
  submitForm();
}

function submitForm(){
  if(checkTlf(MAINFORM(\"felt\")))
    document.MAINFORM.submit();
  else {
    MAINFORM(\"felt\").focus();
    MAINFORM(\"felt\").select();
  }
}

<form name=\"MAINFORM\" action=\"fil.htm\" method=\"POST\">
<input type=\"text\" maxlength=\"15\" name=\"felt\" value=\"\" onKeyPress=\"knapNed();\">
</form>
<a href=\"submitForm();\"><img src=\"knap.gif\"></a>


Hvad kan der være galt?

Med venlig hilsen
Allan Hangaard Rasmussen (hangaard)
Avatar billede cool_casper Nybegynder
21. november 2001 - 11:49 #1
Jeg bruger denne her:
<SCRIPT TYPE=\"text/javascript\">
//global variabel ril h&aring;ndtering af fejl
var errfound = false;
//funktion til validering med length
function ValidLength(item, len) {
  return (item.length >= len);
}
//funktion til validering af E-mail adresse
function ValidEmail(item) {
  if (!ValidLength(item, 5)) return false;
  if (item.indexOf (\'@\', 0) == -1) return false;
  if (item.indexOf (\'.\', 0) == -1) return false;
  return true;
}
//vis en fejlmeddelelse
function error(elem, text) {
//afslut hvis der allerede er fundet en fejl
  if (errfound) return;
  window.alert(text);
  elem.select( );
  elem.focus( );
  errfound = true;
}
//prim&aelig;r validerinsfunktion
function Validate( ) {
  errfound = false;
  if (!ValidLength(document.regform.Navn.value,1)) error(document.regform.Navn, \'Indtast navn!\');
  if (!ValidEmail(document.regform.fromadress.value)) error(document.regform.fromadress, \'Indtast E-mail adresse!\');
  if (!ValidLength(document.regform.Kommentar.value,1)) error(document.regform.Kommentar, \'Indtast spørgsmål/Kommentarer!\');
return !errfound; /* true hvis der ikke er nogen fejl*/
}


</SCRIPT>
Jeg mener det har noget at gøre med errfound!
Prøv at putte errfound = true ind. (Ved ikke hvor!) :-)
Avatar billede jakoba Nybegynder
21. november 2001 - 11:52 #2
Ja den \'submit når der trykkes retur\' feature er ret irriterende.
suden din submit ALTID skal ske via javascript kan vi her nøjes med at sætte en onsubmit handler i din <form kommando der altid returnerer false.

function submitForm(){
  if(checkTlf(MAINFORM(\"felt\")))
    document.MAINFORM.submit();
  else {
    MAINFORM(\"felt\").focus();
    MAINFORM(\"felt\").select();
  }
}

<form name=\"MAINFORM\" action=\"fil.htm\" method=\"POST\" onsubmit=\"return false\">
<input type=\"text\" maxlength=\"15\" name=\"felt\" value=\"\" onKeyPress=\"knapNed();\">
</form>
<a href=\"submitForm();\"><img src=\"knap.gif\"></a>

mvh JakobA
Avatar billede jakoba Nybegynder
21. november 2001 - 11:53 #3
Ups.  suden -> Siden
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