Avatar billede cobra Nybegynder
22. februar 2005 - 21:30 Der er 4 kommentarer og
1 løsning

replace i form

Jeg har en form hvor man kan taste en pris ind FX: 12,95 og dem har jeg så 10 af(formme) og en submit knap. Jeg trykker nu for at få mine priser med på en ny side.

Jeg laver så et request("formnavn") i ASP og den hviser så 12,95,36,50 o.s.v

Det jeg så vil høre om, var om der et JS der kunne replace , med et . i det man trykkede på submit knappen så jeg så det resultat 12.95,36,50 o.s.v

P.S jeg er en del ordblind, men håber i forstå mit problem.
Avatar billede skovenborg Nybegynder
23. februar 2005 - 00:36 #1
Dette er en meget enkel udgave af et script, som kan gøre hvad du ønsker. Den erstatter alle kommaer med punktumer i de nedenstående formfelter (her er det vigtigt at de er nummeret på den måde, ellers virker det knap så godt ;-)
<script type="text/javascript">
function validate(frm) {
    var num = 1;
    while (frm.elements["pris"+num]) {
        obj =frm.elements["pris"+num];
        obj.value = obj.value.replace(",",".");
        num++;
    }
    return true;
}
</script>

<form onsubmit="return validate(this);">
  <input type="text" name="pris1">
  <input type="text" name="pris2">
  <input type="text" name="pris3">
  <input type="text" name="pris4">
  <input type="text" name="pris5">
  <input type="text" name="pris6">
  <input type="text" name="pris7">
  <input type="text" name="pris8">
  <input type="text" name="pris9">
  <input type="text" name="pris10">
  <input type="submit">
</form>

P.S. Det er nu ret svært at se det med ordblindheden, og jeg har set utallige meget slemme eksempler...gad vide hvad de så er ;-)
Avatar billede roenving Novice
24. februar 2005 - 01:31 #2
Man kunne vel også lave en mere generisk, skovenborg:

function replaceKomma(frm){
  var e = frm.elements;
  for(i=0;e.length>i;i+){
    if(e[i].type=='text')
      e[i].value = e[i].value.replace(/(\d),(\d)/,"$1.$2");
  }
}

-- som så vil erstatte alle forekomster af kommaer, som kommer umiddelbart mellem 2 tal med punktum ...
Avatar billede skyggen2000 Nybegynder
14. marts 2005 - 13:19 #3
Hvis navnene på input felterne er forskellige, får han ikke et array når han udfører request("XXX").
I eksemplet nedenfor kører den alle felter igennem med navnet "pris" og erstatter "," med ".": 
<html>
<script language="javascript">

function validateForm(frm)
{
        var flds = frm.elements["pris"];
       
        for (var i = 0; i <flds.length; i++)
        {
            flds[i].value = flds[i].value.replace(",",".");
        }
   
    return true;
}
</script>

<body>       
    <form onsubmit="validateForm(this);">
  <input type="text" name="pris" value="1,0">
  <input type="text" name="pris" value="1,0">
  <input type="text" name="pris" value="1,0">
  <input type="text" name="pris">
  <input type="text" name="pris">
  <input type="text" name="pris">
  <input type="text" name="pris">
  <input type="text" name="pris">
  <input type="text" name="pris">
  <input type="text" name="pris">
  <input type="submit">
  </form>

   
</body>
</html>

Eftersom det er submit, vil du se de erstattede felter i URL'en.
Avatar billede roenving Novice
14. marts 2005 - 22:44 #4
Til gengæld vil mit eksempel være fuldstændig uafhængig af felternes navne, og vil derfor levere resultatet på en mere sikker måde (da det også kun vil erstatte kommaer, hvis de forekommer mellem tal i felterne !-)
Avatar billede skyggen2000 Nybegynder
15. marts 2005 - 09:16 #5
Enig i at dit eksempel er uafhægigt, men hvis ikke det er det man har brug for er der vel ingen grund til at køre samtlige felter igennem. Niftigt detalje med $1.$2, den kendte jeg ikke.
Desuden var min kommentar også til skovenborg, men det glemte jeg lige at nævne.
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