Jeg er helt ny i javascript og håber at i han hjælpe.
I spørgsmål 115613 der blev svaret på bedste ekspertstil nu kunne jeg godt tænke mig at udvidde med følgende funktioner:
Der tages fire parametere, (udover this) min, max, faktor og beregnesifelt som benyttes til følgende:
1) Tjek at der kun er heltal i feltet, hvis ikke så alert med \"ikke gyldig tal\". 2) Tallet må ikke overstige max, hvis det gør dette så alert med \"må ikke overstige : max\" 3) Tallet må ikke være mindre end min hvis det er det så alert med \"må ikke være mindre end min\" 3) hvis tallet klare ovenstående validering så gang det med faktor og gem det i beregnesifelt.
Som det fremgår i spgs. 115613 så skal curseren stille sig i det felt der er fejl i (eller rettere blive i det)
Håber at der er nogle der kan svare på dette eller har noget ligende så jeg kan se hvordan man gør det. :-)
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Jeg har lavet et eks. hvor valideringen du ønsker findes på et felt pr. validering, så kan bedre se hvad der sker!
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<html> <head> <title>Untitled</title> </head>
<body>
<script language=\"JavaScript\">
function check() { if(document.minform.f2.value == \"\" || document.minform.f3.value == \"\") { alert(\"Felt 2 og 3 skal være udfyldt før der kan begregnes\") document.minform.f2.focus(); return false; }
if(isNaN(document.minform.f1.value)) { alert(\"Feltet skal være et heltal\"); document.minform.f1.focus(); return false; }
var f2 = parseInt(document.minform.f2.value) if(f2 > 10) { alert(\"Feltet må ikke være større end 10\") document.minform.f2.focus(); return false; } var f3 = parseInt(document.minform.f2.value) if(f3 < 5) { alert(\"Værdien skal være større end 5\"); document.minform.f3.focus(); return false; }
<form name = \"minform\"> Heltal:<input type = \"text\" name = \"f1\" size = \"8\"> Max 10<input type = \"text\" name = \"f2\" size = \"8\"> Min 5<input type = \"text\" name = \"f3\" size = \"8\"> Beregningsfelst<input type = \"text\" name = \"f4\" size = \"8\"> <input type = \"button\" value = \"beregn\" onClick=\"java script:check()\"> </form>
senj >> jeg tror felterne til test 1, 2 og 3 skulle være samme felt
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\"> <html> <head> <title>teste felt</title> </head> <body>
<script language=\"JavaScript\"> <!--
function checkF1( min, max, faktor, destnavn ) {
// jeg har fjenet disse 2 tests da RegExp testen gør det samme og er lidt sikrere. // if ( document.minform.f1.value == \"\" ) { // test1 // alert(\"Feltet skal være udfyldes før der kan begregnes\") // document.minform.f1.focus(); // return false; // } // // if( isNaN(document.minform.f1.value) ) { // alert(\"Feltet skal være et heltal\"); // document.minform.f1.focus(); // return false; // }
// test om hele feltet består at cifre // /^\\d+$/ er en regular expression (RegExp) if ( !/^\\d+$/.test( document.minform.f1.value ) ) { alert(\"Feltet skal være et heltal\"); document.minform.f1.focus(); return false; }
var f1verdi = parseInt(document.minform.f1.value);
if ( f1verdi > 10 ) { // test om værdien er større end 10 alert(\"Feltet må ikke være større end 10\") document.minform.f1.focus(); return false; }
if (f1verdi < 5) { // test om værdien er mindre end 5 alert(\"Værdien må ikke være mindre end end 5\"); document.minform.f1.focus(); return false; }
Ups. og så glemte jeg at rette funktionens navn der den bliver kaldt: <input type = \"button\" value = \"beregn\" onClick=\"java script:checkF1( 5, 10, 9.85, \'f4\' )\">
Hej jeg er kommet frem til følgende. Er der nogle der kan se nogle problmer i scriptet?
Næste problem er at når der tastes et forkert tal og derefter summit form så kommer alert boksen godt nok men der bliver summittet med den forkerte værdi! Nogle der har et bud?
jeg bruger onblur på mine input felter, er det godt?
Mange Tak Lars
function tjektal(getElem,min,max,faktor,putElem) {
Scriptet skal aktiveres direkte eller indirektee i en onsubmit handler i form kommandoen, handleren skal returnere den true eller false scriptet giver retur.
if ( ! tjektal( frm.elements[ \'f1\' ], 5, 10, 14, \'f4\' ) ) return false; if ( ! tjeltal( frm.elements[ \'f2\' ], 16, 24, 7, \'f5\' ) ) return false; ... // hvis en af dine tests fejler returneres false return true; // Alt er ok. der må submittes }; //end submitTjek ( Form objekt ) -> boolean
function tjektal ( ... // ganske som du har den
... // og de andre testfunktioner
// --> </script>
din <form kommando skal så have en onsubmit handeler a la:
<form ... onsubmit=\"return submitTjek( this );\">
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.