Avatar billede mrmox2 Nybegynder
26. november 2014 - 06:27 Der er 3 kommentarer og
1 løsning

Afgrænse svarmulighed til et helt tal mellem -50 og 50

Jeg har denne form til indtastning af tal
Gyldig input er heltal mellem -50 og 50, også 0

------------------------

<form name="form2" method="post" action="">
<td>
    <table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
    <tr>
        <td width="90"><span class="indhold">18 - 24 &aring;r</span></td>
        <td width="6">:</td>
        <td width="40"><input name="f1824" type="number" min="-50" max="50" id="1824" required></td>
    </tr><tr>
        <td width="90"><span class="indhold">25 - 29 &aring;r</span></td>
        <td width="6">:</td>
        <td width="40"><input name="f2529" type="number"  min="-50" max="50" id="2529" required></td>
    </tr><tr>
        <td width="90"><span class="indhold">Andet / ikke oplyst</span></td>
        <td width="6">:</td>
        <td width="40"><input name="fother" type="number"  min="-50" max="50" id="other" required></td>
    </tr><tr>
        <td width="90"><span class="indhold">Dato</span></td>
        <td width="6">:</td>
        <td width="40"><input name="fdatepick" type="text" id="datepicker" size="17" required><div id="datepicker"></div>
    </td>
    </tr><tr>
        <td></td>
        <td></td>
        <td><input type="submit" name="Submit" value="Gem">&nbsp;&nbsp;&nbsp;<button onClick="location.href = 'vote.php'">Fortryd</button>
    </td>
    </tr>
    </table>
</td>
</form>

--------------------


På PC virker det fint men på tablets får jeg lov at gemme felterne med fx bogstaver i (så bliver der bare ikke registreret noget).

Derfor har jeg prøvet at lave noget php der validerer input

if(!is_int($f1824 || $f2529 || $fother)){
header("location:form2.php");
exit;
}

Men det giver ikke det ønskede resultet
har også prøvet med noget regexp men det får jeg heller ikke til.

Er der en der kan gennemskue det?
Avatar billede Slater Ekspert
26. november 2014 - 08:32 #1
Det nemmeste er som regel at bruge regex til at smide alt andet end tal væk. F.eks.

$str = "z60f12m";
$str = preg_replace('/[^\d]/', '', $str);
>>> 6012

Så kan du evt. bruge min() og max() til at begrænse det til -50 til 50.
Avatar billede arne_v Ekspert
28. november 2014 - 04:05 #2
Principielt mener jeg at fejl i input boer given en fejl og ikke forsoegt korrigeret af programmet. Der er en paen sandsynlighed for at programmets korrektion ikke er det som brugeren oenskede.
Avatar billede mrmox2 Nybegynder
04. december 2014 - 01:36 #3
Jeg vil også helst have at php genererer en fejl og derved giver mulighed for at indtaste igen.

Er der ikke noget rimelig plain php der kan det?

mvh t
Avatar billede mrmox2 Nybegynder
11. december 2014 - 10:17 #4
lukker
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

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