Avatar billede weis Nybegynder
27. januar 2006 - 20:24 Der er 10 kommentarer og
1 løsning

Textbox med et beløb der skal tjekkes

Jeg har en textbox hvor man skal taste et beløb ind, men jeg har problemer med at lave en kode der tjekker om der er komma i beløbet og om det er et korrekt beløb:

xxx,xx

Så hvis der ikke er noget komma skal den selv tilføje ,00 og hvis der er komma og der er mere end 2 tegn efter det skal den skrive en fejlbesked. Er der en der kan hjælpe?
Avatar billede tjp Mester
28. januar 2006 - 05:23 #1
Denne funktion returnerer korrekt beløb eller skriver "FEJL":

function parseBeloeb(str){
  var re1 = /^[0-9]+$/ig;
  var re2 = /^[0-9]+,[0-9]{2}$/ig;
  if (re1.test(str)){
    return str+",00"; 
  }
  else if (re2.test(str)){
    return str;
  }
  else {
    alert("FEJL");
    return "FEJL";
  }
}
Avatar billede weis Nybegynder
30. januar 2006 - 15:23 #2
Jeg har nu forsøgt mig lidt med det her, men kan ikke få det til at virke.
Jeg henter først en:
beloeb_form = request.form(beloeb)

Så laver jeg en:
beloeb = parseBeloeb(beloeb_form)

Men i selve function får jeg denne fejl:

Microsoft VBScript compilation error '800a0408'

Invalid character

/system/admin/trop.asp, line 234

function parseBeloeb(str){
-------------------------^
Avatar billede weis Nybegynder
30. januar 2006 - 15:24 #3
fejlen ligger i tegnet { og ikke (str)
Avatar billede tjp Mester
30. januar 2006 - 16:15 #4
Ha, det ville da være mærkeligt andet, når fjolset her har skrevet det i javascript! ;-)
Her følger en oversættelse (ikke testet):

function parseBeloeb(str)
  dim re1, re2
  Set re1 = New RegExp
  re1.Pattern = "^[0-9]+$"
  re1.IgnoreCase = True
  re1.Global = True

  Set re2 = New RegExp
  re2.Pattern = "^[0-9]+,[0-9]{2}$"
  re2.IgnoreCase = True
  re2.Global = True

  if re1.test(str) then
    parseBeloeb = str+",00"
  elseif re2.test(str) then
    parseBeloeb = str
  else
    WScript.Echo "FEJL"
    parseBeloeb = "FEJL"
  end if
end function
Avatar billede weis Nybegynder
30. januar 2006 - 16:45 #5
jeg får en fejl i denne linje:
WScript.Echo "FEJL"

--------------
Microsoft VBScript runtime error '800a01a8'

Object required: 'WScript'
Avatar billede weis Nybegynder
30. januar 2006 - 16:52 #6
Kan man ikke gøre sådan at den laver en fejlsætning jeg kan placere hvor jeg vil. I de andre felter bruger jeg at når der ikke står noget så:

dato_fejl = "* Du kar ikke valgt en dato"

og så udskriver den det ved siden af og den gemmer det man har indtastet! Kan man også det i denne funktion
Avatar billede tjp Mester
30. januar 2006 - 17:00 #7
Prøv at udkommentere det og udskriv fx 'parseBeloeb("535,274")'.
Avatar billede weis Nybegynder
30. januar 2006 - 17:03 #8
nu kender jeg ikke så meget til functions i ASP, så jeg skal måske have en lidt "dybere" forklaring :-)
Avatar billede tjp Mester
30. januar 2006 - 23:57 #9
Sæt ' foran linjen med 'WScript.Echo "FEJL"', så springes den over, når scriptet køres. Hvordan ser resten af din kode ud?
Avatar billede weis Nybegynder
31. januar 2006 - 21:09 #10
Hele koden ser sådan her ud:

<% if Request.ServerVariables("REQUEST_METHOD") = "POST" then %>
                   
                    <%
                    function parseBeloeb(str)
                  dim re1, re2
                  Set re1 = New RegExp
                  re1.Pattern = "^[0-9]+$"
                  re1.IgnoreCase = True
                  re1.Global = True
               
                  Set re2 = New RegExp
                  re2.Pattern = "^[0-9]+,[0-9]{2}$"
                  re2.IgnoreCase = True
                  re2.Global = True
               
                  if re1.test(str) then
                parseBeloeb = str+",00"
                  elseif re2.test(str) then
                    parseBeloeb = str
                  else
                  WScript.Echo "FEJL"
                parseBeloeb = "Fejl i beløbet"
              end if
            end function
                    %>
                   
                <%
                font_a = "<font color=#CC0000>"
                font_b ="</font>"
                   
                type_be = Request.Form("type")
                tegn = Request.Form("tegn")
                beloeb_be = Request.Form("beloeb")
                    beloeb = parseBeloeb(beloeb_be)
                tekst = Request.Form("tekst")
                kasser = Request.Form("kasser")
                konto = Request.Form("konto")
                nota = Request.Form("nota")
                dato = Request.Form("datoT")
                               
                if tekst = "" then
                    tekst_fejl = "<br>" & font_a & "* Du har ikke skrevet en kort tekst" & font_b
                end if
                if beloeb_be = "" then
                    beloeb_fejl = font_a & "* Du har ikke skrevet et beløb" & font_b
                end if
                if dato = "" then
                    dato_fejl = font_a & "* Du skal vælge dato for købet" & font_b
                end if
               
                if tekst <> "" and beloeb <> "" and dato <> "" then
               
                Set Conn = Server.CreateObject("ADODB.Connection")
                Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("konto.mdb")
               
                Set Sprs = Server.CreateObject("ADODB.RecordSet")                                   
                strSQL = "select * from konto"
                Sprs.Open strSQL, Conn, 2, 2
                   
                    Sprs.AddNew
                        Sprs("navn") = rs("navn")
                        Sprs("type") = type_be
                        Sprs("tekst") = tekst
                        Sprs("tegn") = tegn
                        Sprs("beloeb") = beloeb
                        Sprs("nota") = nota
                        Sprs("dato") = (FormatDateTime(Now, vbShortDate))
                        Sprs("kl") = (FormatDateTime(Now, vbLongTime))
                        Sprs("datoT") = dato
                       
                        if kasser = "ON" then
                            SQLkasser = True
                        else
                            SQLkasser = False
                        end if
                        Sprs("kasser") = SQLkasser
                       
                        if konto = "ON" then
                            SQLkonto = True
                        else
                            SQLkonto = False
                        end if
                        Sprs("konto") = SQLkonto
                   
                    Sprs.Update
                                       
                Sprs.Close
                set Sprs = Nothing
                Conn.Close
                set Conn = Nothing
                Response.Redirect("konto.asp")
               
                end if
            end if%>
-------------------------------------------------------------------
Og det skulle gerne være sådan at hvis indholdet ikke stemmer overens med et beløb xxx,xx så kan det ikke gemmes, der skal der så udskrives denne fejlbesked og det indtastede skal gerne gemmes i feltet!

Det skulle også gerne være sådan at man ikke kan gemme bogstaver i beløbfeltet!
Avatar billede tjp Mester
04. februar 2006 - 01:02 #11
Ændr i 'function parseBeloeb(str)':

WScript.Echo "FEJL"
parseBeloeb = "Fejl i beløbet"

til:

parseBeloeb = ""

og tilføj ved de andre tjek noget ala:

if beloeb = "" And beloeb_be <> "" then
  beloeb_fejl = font_a & "* Du har indtastet et ugyldigt beløb" & font_b
end if
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
Kurser inden for grundlæggende programmering

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