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)
21. november 2001 - 11:49
#1
Jeg bruger denne her:
<SCRIPT TYPE=\"text/javascript\">
//global variabel ril hå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æ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!) :-)
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