Avatar billede snigeren Nybegynder
25. juli 2007 - 13:48 Der er 17 kommentarer og
1 løsning

tekstfield man kun kan skrive tal i?

Kan man gøre så man KUN kan skrive tal i et tekstfield? det er jo lidt dumt hvis der nu er en der skriver et bogstav med i et antal felt =)
Avatar billede showsource Seniormester
25. juli 2007 - 13:54 #1
Ved post bruger du
is_numeric()

Men før post kan du med javascript bruge flg.

function er_et_tal() {

    var reg = /^[\d]+$/;

    var navn = document.forms['form_navn'].elements['felt_antal'];

    if(navn.value !='' && !navn.value.match(reg)){

      alert("Kun tal kan indtastes i feltet!");

      navn.value = '';

      return false;

    }

}
Avatar billede w13 Novice
25. juli 2007 - 13:54 #2
Tjaeh. Jeg er lidt i tvivl, hvilken af de to følgende ting, du vil:

1) Brugeren kan skrive alt i feltet, men ved submit får han en fejlmeddelelse.
2) Der kan overhovedet ikke indtastes andet end tal i feltet. Hvis man prøver at skrive et bogstav, bliver det slet ikke vist.

Hvis det er nr. 2, så _skal_ det være JavaScript. Og det ville jeg i øvrigt også anbefale til nr. 1, selvom det ville kunne laves med PHP.
Avatar billede showsource Seniormester
25. juli 2007 - 13:54 #3
felt_navn og ikke antal.....
Avatar billede snigeren Nybegynder
25. juli 2007 - 14:06 #4
altså helt optimalt ville det jo være nr.2 men ved ikke hvor smart det er,.. er der ikke nogen der slår javascript fra i deres browser?
Avatar billede w13 Novice
25. juli 2007 - 14:23 #5
Gemmer du resultatet i en database? For så kan du jo bare sætte "antal"-feltet til at være et talfelt. Så _hvis_ nogen slår javascript fra, og synes det er sjovt at skrive bogstaver i feltet, får de en databasefejlmeddelelse. Den er ikke pæn, men den redder det da.

Optimalt synes jeg dog, man altid bør checke med både JavaScript og PHP.
Om det er tal kan checkes således: http://dk.php.net/manual/da/function.is-numeric.php
Det kan jo desværre først checkes, når siden er submittet, men som sagt kan det være et ekstra sikkerhedscheck.

"Problemet" med JavaScript er jo netop, at det altid kan slås fra, og - næsten vigtigere - altid manipuleres! Brugeren Olebole har skrevet en nyttig artikel om det emne, som er anbefalelsesværdig: http://www.dengodekode.dk/bm_artikel.html
Eks. kan du gå ind på www.tv2.dk og skrive følgende i adresselinjen:
java script:for(i=0;i<=document.getElementsByTagName("img").length;i++){document.getElementsByTagName("img")[i].setAttribute("src","http://przedszkolanka.blox.pl/resource/pippi.jpg")}void(0)

På samme måde kan alt andet på siden manipuleres, og med et blot middelmådigt kendskab til JavaScript kan bl.a. validering af tekstfelter sagtens slås fra.
Avatar billede snigeren Nybegynder
25. juli 2007 - 14:29 #6
k,.. det er jo lidt skod. Men hva faen...

Men nej data gemmes ikke i database kun i cookie via cart.php
Avatar billede showsource Seniormester
25. juli 2007 - 14:33 #7
Når du sætter cookien, så brug intval()

Lige et eks.

<html><head><title>Kun tal</title>

<script type="text/javascript">


function er_et_tal() {

    var reg = /^[\d]+$/;

    var navn = document.forms['kun_tal'].elements['et_tal'];

    if(navn.value !='' && !navn.value.match(reg)){

      alert("Kun tal kan indtastes i feltet!");

      navn.value = '';

      return false;

    }

}

</script>

</head>

<body>

<form action="kun_tal.php" method="post" name="kun_tal">
<input type="text" name="et_tal" onkeyup="er_et_tal();">
<input type="submit" value="Vis">
</form>


<?php
if(isset($_POST["et_tal"])) {

    if(is_numeric($_POST["et_tal"])) {
    echo"OK = ". intval($_POST["et_tal"]);
    }else{
    echo"Nix, det er ikke et tal!";
    }

}


?>

</body></html>
Avatar billede snigeren Nybegynder
25. juli 2007 - 14:41 #8
ok,.. uhm jeg bruger et færdigt script i cart.php men må se om ikke jeg kan putte det ind i =)
Avatar billede showsource Seniormester
25. juli 2007 - 14:53 #9
Du kan også bruge flg. hvis du vil ha' javascript funktionen til at virke for flere forms/felter

function er_et_tal(formname,fieldname) {

    var reg = /^[\d]+$/;

    var navn = document.forms[formname].elements[fieldname];

    if(navn.value !='' && !navn.value.match(reg)){

      alert("Kun tal kan indtastes i feltet!");

      navn.value = '';

      return false;

    }

}


og

<input type="text" name="et_tal" onkeyup="er_et_tal(this.form.name,this.name);">
Avatar billede w13 Novice
25. juli 2007 - 15:04 #10
Hvis man slet ikke skal kunne taste bogstaver ind, kan du vist også benytte følgende kode:

<HTML>
  <HEAD>
  <SCRIPT language=Javascript>
      <!--
      function isNumberKey(evt)
      {
        var charCode = (evt.which) ? evt.which : event.keyCode
        if (charCode > 31 && (charCode < 48 || charCode > 57))
            return false;

        return true;
      }
      //-->
  </SCRIPT>
  </HEAD>
  <BODY>
      <INPUT id="txtChar" onkeypress="return isNumberKey(event)" type="text" name="txtChar">
  </BODY>
</HTML>
Avatar billede w13 Novice
25. juli 2007 - 15:04 #11
Wups, det har vist allerede været svaret =)
Avatar billede snigeren Nybegynder
25. juli 2007 - 15:31 #12
ja ok,.. det virker jo, kan i ikke bare få halv points hver? =)  anyways smid lige nogle svar
Avatar billede w13 Novice
25. juli 2007 - 15:32 #13
ShowSource kan bare få dem :)
Avatar billede snigeren Nybegynder
25. juli 2007 - 15:57 #14
ok,.. showsource smid et svar! =)
Avatar billede showsource Seniormester
26. juli 2007 - 11:17 #15
ingen point, ellers tak.
Avatar billede snigeren Nybegynder
26. juli 2007 - 11:51 #16
ehem jammen så skal w13 jo ha dem! ellers lukker jeg bare selv :D
Avatar billede w13 Novice
26. juli 2007 - 14:38 #17
Du ta'r dem bare. :)
Avatar billede snigeren Nybegynder
02. august 2007 - 16:00 #18
godt så,.. jeg lukker :D
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