Avatar billede mini-me Nybegynder
27. maj 2006 - 16:59 Der er 11 kommentarer og
1 løsning

Brug for at validere/ændre input

Hej,

Jeg er ikke den store javascript haj, jeg har 6 text-felter hvori det er muligt at indtaste en værdi hvorefter den beregner de 6 tal og smider det i et andet textfelt.

Problemet er bare at hvis jeg taster 1,3 så fungere det ikke jeg skal bruge 1.3 for at den ligger tallene korrekt sammen.

Så jeg skal bruge noget kode der udvider det jeg i forvejen har lavet med flg.:

1. Giver en alert hvis det ikke er et tal der bliver indtastet
2. Den skal kunne addere selvom jeg skriver 1,3 eller 1.3

Her er min nuværende kode:


<script language="javascript">
    // Start :)
    function calcTime()
    {
       
        document.getElementById("totalTime").value = eval(document.getElementById("tid_1").value) + eval(document.getElementById("tid_2").value) + eval(document.getElementById("tid_3").value) + eval(document.getElementById("tid_4").value) + eval(document.getElementById("tid_5").value) + eval(document.getElementById("tid_6").value)
   
    }
</script>
Avatar billede mini-me Nybegynder
27. maj 2006 - 19:40 #1
Anyone?
Avatar billede mclemens Nybegynder
27. maj 2006 - 22:07 #2
noget i denne stil?


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<style type="text/css">

</style>

<script type="text/javascript">
function calcTime(){
tmpstr=0;

for(i=1;i<7;i++){
  tmpn=document.getElementsByName("tid_"+i)[0];
  tmpval=tmpn.value.replace(",",".");
  if(!parseFloat(tmpval)){tmpstr="Indtast værdier";i=7;tmpn.focus();alert("Dette felt skal være i formatet:\n1000,12 og må ikke indeholde tegn!");}
  else tmpstr+=parseFloat(tmpval);
}

tmpstr=""+tmpstr;
document.getElementsByName("totalTime")[0].value=tmpstr.replace(".",",");

}

</script>
</head>

<body>

<form action="#" method="get" name="searchForm"><div>
Total tid: <input value="Indtast værdier" name="totaltid" id="totalTime"><br>

Tid 1: <input value="" name="tid_1"><br>
Tid 2: <input value="" name="tid_2"><br>
Tid 3: <input value="" name="tid_3"><br>
Tid 4: <input value="" name="tid_4"><br>
Tid 5: <input value="" name="tid_5"><br>
Tid 6: <input value="" name="tid_6"><br>

<input type="button" onclick="calcTime();" value="Udregn">
</div></form>

</body></html>
Avatar billede mclemens Nybegynder
27. maj 2006 - 22:14 #3
genialt Clemme ... *doh*
- ret lige denne linje:
Total tid: <input value="Indtast værdier" name="totaltid" id="totalTime"><br>

til:

Total tid: <input value="Indtast værdier" name="totalTime"><br>

... så virker firefox også ...
Avatar billede mini-me Nybegynder
28. maj 2006 - 12:19 #4
Hej det virker næsten som det skal men, det er ikke nødvendigt for brugeren at udfylde alle 6 felter, dvs han skal kunne nøjes med at fylde ud i felt 1 og 2 og så regner den samme, uden at komme med en fejl :)

Og så har jeg en onchange på mine inputs så de beregner summen med det samme, men det script du har lavet giver en fejl hele vejen igennem indtil alle felter er udfyldt.


<input name="kode_1" type="text" class="smallTextBox" id="kode_1" value="" />
Avatar billede mclemens Nybegynder
28. maj 2006 - 12:31 #5
hjælpwe det her?

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<style type="text/css">

</style>

<script type="text/javascript">
function calcTime(){
tmpstr=0;

for(i=1;i<7;i++){
  tmpn=document.getElementsByName("tid_"+i)[0];
  tmpval=tmpn.value.replace(",",".");
  if((!parseFloat(tmpval))&&(tmpval!="")&&(tmpval!=0)){tmpstr="Indtast værdier";i=7;tmpn.focus();alert("Dette felt skal være i formatet:\n1000,12 og må ikke indeholde tegn!");}
  else tmpstr+=parseFloat(tmpval*1);
}

tmpstr=""+tmpstr;
document.getElementsByName("totalTime")[0].value=tmpstr.replace(".",",");

}

</script>
</head>

<body>

<form action="#" method="get" name="searchForm"><div>
Total tid: <input value="Indtast værdier" name="totalTime"><br>

Tid 1: <input value="" name="tid_1" onkeyup="calcTime();"><br>
Tid 2: <input value="" name="tid_2" onkeyup="calcTime();"><br>
Tid 3: <input value="" name="tid_3" onkeyup="calcTime();"><br>
Tid 4: <input value="" name="tid_4" onkeyup="calcTime();"><br>
Tid 5: <input value="" name="tid_5" onkeyup="calcTime();"><br>
Tid 6: <input value="" name="tid_6" onkeyup="calcTime();"><br>

</div></form>

</body></html>
Avatar billede mclemens Nybegynder
28. maj 2006 - 12:31 #6
ups hjælpwe -> hjælper
Avatar billede mini-me Nybegynder
28. maj 2006 - 12:37 #7
Perfekt du er alle 100 point værd smid dit svar ;)
Avatar billede mini-me Nybegynder
28. maj 2006 - 12:38 #8
Hov så der noget galt nu hvis jeg indtaster tekst i feltet, så er det først anden eller 3 gang den kommer og reagere på det...?!
Avatar billede mclemens Nybegynder
28. maj 2006 - 13:07 #9
hjælper denne her? - ellers så beskriv hvordan jeg får fejlen...

<script type="text/javascript">
function calcTime(){
tmpstr=0;

for(i=1;i<7;i++){
  tmpn=document.getElementsByName("tid_"+i)[0];
  tmpval=tmpn.value.replace(",",".");
  if(((tmpval>0)&&(parseFloat(tmpval)))||(tmpval=="")||(tmpval==0))tmpstr+=parseFloat(tmpval*1);
  else{tmpstr="Indtast værdier";i=7;tmpn.focus();alert("Dette felt skal være i formatet:\n1000,12 og må ikke indeholde tegn!");}
}

tmpstr=""+tmpstr;
document.getElementsByName("totalTime")[0].value=tmpstr.replace(".",",");

}

</script>
Avatar billede mini-me Nybegynder
28. maj 2006 - 13:09 #10
Tak, det virker tilfredsstillende ;) smid et svar
Avatar billede mclemens Nybegynder
28. maj 2006 - 13:10 #11
ok :)
Avatar billede mclemens Nybegynder
28. maj 2006 - 13:16 #12
- og tak for point :)
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