Avatar billede hoejgaard Juniormester
17. juni 2005 - 15:06 Der er 27 kommentarer og
1 løsning

problkem med felt i form

Hej.

Jeg har en form hvor brugeren indtaster postnr. og så kommer bynavnet automatisik frem i feltet nedenunder. Jeg bruger følgende :
<script type="text/JavaScript" src="dk_pns.js"></script>
<script type="text/JavaScript">
function fillPn(f) {
    var inx = "p"+f.p.value;
    if (pn[inx]) {
        f.b.value = pn[inx];
    } else {
        f.b.value = "Forkert postnummer";
        f.p.select();
    }
}
</script>

OG HER BLIVER DET UDSKREVET :

<TR>
                                              <TD class=td23 align="left" ><b>&nbsp;Postnr:</b></TD>
                                              <TD ><input type="text" name="p" onblur="fillPn(this.form);" style="font-size:9px"  STYLE="height: 17px" STYLE="width: 96px" SIZE="8" MAXLENGTH="30" ></TD>
                                            </TR>
                                            <tr>
                                              <TD class=td23 align="left" ><b>&nbsp;By:</b></TD>
                                              <TD><input type="text" name="b"  onfocus="this.blur();" readonly style="font-size:9px"  STYLE="height: 17px" STYLE="width: 96px"></TD>
                                            </TR>

Problemet er at hvis man i postnr feltet bare klikker med musen uden at skrive noget så skriver den "Forkert postnummer" i bynavn feltet, og jeg kan ikke fjerne "Forkert postnummer" igen med mindre jeg skriver et godkendt postnummer. Men hvis man nu fortryder og ikke vil indtaste postnummer, så vil formen blive sendt videre med "Forkert postnummer".
Jeg vil gerne have at "Forkert postnummer" kan fjernes inden formen sendes! Kan det ikke lade sig gøre eksperter :-)
Avatar billede Syska Mester
17. juni 2005 - 15:09 #1
kan du ikke teste om "p"+f.p.value er length 0???
Avatar billede hoejgaard Juniormester
17. juni 2005 - 15:11 #2
hvordan er det man skriver det
Avatar billede Syska Mester
17. juni 2005 - 16:59 #3
Kan ikke lige huske det, er ikke js mand, men var bare en ide'
Avatar billede softspot Forsker
17. juni 2005 - 17:22 #4
Det skal vel være 1 karakter lang...?

if(("p"+f.p.value).length > 1)
{
  // gør hvad der skal gøres hvis postnr er længere end 1
}

Du kunne jo også bare checke om f.p.value.length > 0...
Avatar billede hoejgaard Juniormester
17. juni 2005 - 21:20 #5
Jeg er ikke helt med på hvorfor jeg skal checke længden ??
Avatar billede olebole Juniormester
17. juni 2005 - 23:21 #6
<ole>

Jo, du kan vel bare fjerne 'onfocus="this.blur();" readonly' på andet input

/mvh
</bole>
Avatar billede softspot Forsker
17. juni 2005 - 23:25 #7
For at undgå validering på intet postnr. På den måde har du en mulighed for at fortryde påbegyndt indtastning af postnr (eller blot at feltet fik fokus, f.eks. via klik med mus eller tabulering).
Avatar billede softspot Forsker
17. juni 2005 - 23:30 #8
Jeg er klar over at det ikke har noget med din problemstilling at gøre, men er der nogen speciel årsag til at du skriver styles på den måde du gør? De skrives "normalt" i en style-attribut separeret med semikolon, altså noget á la:
STYLE="height:17px; width:96px; font-size:9px"

Ikke fordi jeg skal blande mig mere end nødvendigt i hvordan du skriver din HTML, men jeg er bare nysgerrig for om der kunne være nogle situationer hvor din notation kunne være bedre :)
Avatar billede roenving Novice
18. juni 2005 - 03:11 #9
>>softspot

-- der indes ingen situationer, hvor notationen med flere style-attributter kan være bedre, der vil altid kun være den forskel, at det kræver mere båndbredde, men vi er nede på de små marginaler ...

-- og ellers skal der bare checkes for om der i virkeligheden er skrevet noget, som også du gør opmærksom på @17/06-2005 17:22:24!-)

<script type="text/JavaScript">
function fillPn(f) {
  if(f.p.value.length>0){
    var inx = "p"+f.p.value;
    if (pn[inx]) {
        f.b.value = pn[inx];
    } else {
        f.b.value = "Forkert postnummer";
        f.p.select();
    }
  }
}
</script>
Avatar billede roenving Novice
18. juni 2005 - 03:12 #10
... der findes ...
Avatar billede hoejgaard Juniormester
20. juni 2005 - 14:52 #11
Okay kigger lige på det om et par dage. har desværre ikke tid lige nu..
Avatar billede hoejgaard Juniormester
20. juni 2005 - 15:00 #12
Okay havde lige tid alligevel:-)
Med din kode roenving, skriver den stadig "forkert postnummer" selvom jeg sletter det forkerte postnummer.. og feltet er tomt ??
Avatar billede hoejgaard Juniormester
20. juni 2005 - 15:03 #13
okay jeg kan så godt skrive noget i de andre felter i formen, men vil gerne ha at "forkert postnummer" fjernes automatisk når jeg sletter det forkerte postnummer ..
Avatar billede roenving Novice
20. juni 2005 - 15:13 #14
Så må du jo tømme den, hvis der er noget:

<script type="text/JavaScript">
function fillPn(f) {
  if(f.p.value.length>0){
    var inx = "p"+f.p.value;
    if (pn[inx]) {
        f.b.value = pn[inx];
    } else {
        f.b.value = "Forkert postnummer";
        f.p.select();
    }
  }
  f.b.value = "";
}
</script>
Avatar billede roenving Novice
20. juni 2005 - 15:14 #15
Hov:

... hvis der ikke er noget ...

-- og:

<script type="text/javascript">
function fillPn(f) {
  if(f.p.value.length>0){
    var inx = "p"+f.p.value;
    if (pn[inx]) {
        f.b.value = pn[inx];
    } else {
        f.b.value = "Forkert postnummer";
        f.p.select();
    }
  }else
    f.b.value = "";
}
</script>
Avatar billede hoejgaard Juniormester
20. juni 2005 - 15:19 #16
Ja det vár bedre :-)
Avatar billede hoejgaard Juniormester
20. juni 2005 - 15:26 #17
Kan man iøvrigt ikke lave en trim funktion som i PHP hvor blanke felter fjernes så den ikke skriver "forkert postnummer " ved kun blanke felter ??
Avatar billede roenving Novice
20. juni 2005 - 15:33 #18
Ovenstående vil da kun skrive forkert postnummer, hvis du faktisk skriver noget i feltet ?-)
Avatar billede hoejgaard Juniormester
20. juni 2005 - 18:30 #19
Nej hvis jeg bruger mellemrumstasten og laver blanke tegn så skriver den også forkert postnummer, og jeg tænkte at man måske så kunne bruge noget lige som trim i php ??
Avatar billede hoejgaard Juniormester
20. juni 2005 - 18:31 #20
det er dette jeg har nu :
<script type="text/javascript">
function fillPn(f) {
  if(f.p.value.length>0){
    var inx = "p"+f.p.value;
    if (pn[inx]) {
        f.b.value = pn[inx];
    } else {
        f.b.value = "Forkert postnummer";
        f.p.select();
    }
  }else
    f.b.value = "";
}
</script>
Avatar billede roenving Novice
20. juni 2005 - 18:34 #21
Ja, ja, vil du også fjerne andet end tal, så det kun er tal, som bruges ?-)

<script type="text/javascript">
function fillPn(f) {
  f.p.value = f.p.value.replace(/[^\d]/g,"");
  if(f.p.value.length>0){
    var inx = "p"+f.p.value;
    if (pn[inx]) {
        f.b.value = pn[inx];
    } else {
        f.b.value = "Forkert postnummer";
        f.p.select();
    }
  }else
    f.b.value = "";
}
</script>
Avatar billede hoejgaard Juniormester
20. juni 2005 - 22:31 #22
takker for hjælpen :-) Læg et svar roenving
Avatar billede roenving Novice
22. juni 2005 - 04:15 #23
Velbekomme '-)
Avatar billede roenving Novice
25. juni 2005 - 17:51 #24
-- og tak for point ;~}
Avatar billede hoejgaard Juniormester
30. juni 2005 - 17:44 #25
Jeg har stadig et problem her. Et sted virker det som det skal, men i en anden php fil er opbygningen lidt anderledes og der bliver "Forkert postnummer" sendt med videre hvis brugeren taster forkert. dvs det står i formen som kommer op ved fejltastning og det skal det ikke, der skal det være tomt, som det også er i det andet tilfælde . Koden er :

<?
ob_start();
session_start();
$userid = $_SESSION['valid_user'];
$del_me = $HTTP_POST_VARS['del_me'];
?>
<html>
<head>

  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/JavaScript" src="dk_pns.js"></script>


<script type="text/javascript">
function fillPn(f) {
  f.p.value = f.p.value.replace(/[^\d]/g,"");
  if(f.p.value.length>0){
    var inx = "p"+f.p.value;
    if (pn[inx]) {
        f.b.value = pn[inx];
    } else {
        f.b.value = "Forkert postnummer";
        f.p.select();
    }
  }else
    f.b.value = "";
}
</script>

<? if($_POST['up']){ 

if (  (!ereg('^([0-9]+)-([0-9]+)-([0-9]+) ([0-9]+):([0-9]+)$',$_POST[tidspunkt],$reg)  ) { 
                             
                              include("invitation_tidspunkt_ugyldig.php"); 
                              exit;
                                  }


<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
                     
                        <table border="0" cellspacing="0" cellpadding="0" width="100%">

<TR>
                                              <TD class=td23 align="left" ><b>&nbsp;Postnr:</b></TD>
                                              <TD ><input type="text" name="p" onblur="fillPn(this.form);" style="font-size:9px"  STYLE="height: 17px" STYLE="width: 96px" SIZE="8" MAXLENGTH="30" ></TD>
                                            </TR>
                                            <tr>
                                              <TD class=td23 align="left" ><b>&nbsp;By:</b></TD>
                                              <TD><input type="text" name="b"  onfocus="this.blur();" readonly style="font-size:9px"  STYLE="height: 17px" STYLE="width: 96px"></TD>
                                            </TR>
<tr>
                                    <td width="15%">&nbsp;</td>
                                    <td width="21%">&nbsp;</td>
                                    <td width="21%" valign="top" align="center"><br><input type="submit" STYLE="width: 96px" value="godkend" name="up"></td>
                                    <td>&nbsp;</td>
                                    <td width="6%" >&nbsp;</td>
                                </tr>                             
                        </table>
                        </form> OSV.....

Og  i invitation_tidspunkt_ugyldig.php har jeg :

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
                     
                        <table border="0" cellspacing="0" cellpadding="0" width="100%">
<TR>
                                              <TD class=td23 align="left" ><b>&nbsp;Postnr:</b></TD>
                                              <TD ><input type="text" name="p" onchange="fillPn(this.form);" style="font-size:9px"  STYLE="height: 17px" STYLE="width: 96px" SIZE="8" MAXLENGTH="30" value="<?php echo "$_POST[p]"; ?>"></TD>
                                            </TR>
                                            <tr>
                                              <TD class=td23 align="left" ><b>&nbsp;By:</b></TD>
                                              <TD><input type="text" name="b"  onfocus="this.blur();" readonly style="font-size:9px"  STYLE="height: 17px" STYLE="width: 96px" value="<?php echo "$_POST[b]"; ?>"></TD>
                                            </TR>
<tr>
                                    <td width="15%">&nbsp;</td>
                                    <td width="21%">&nbsp;</td>
                                    <td width="21%" valign="top" align="center"><br><input type="submit" STYLE="width: 96px" value="godkend" name="up"></td>
                                    <td>&nbsp;</td>
                                    <td width="6%" >&nbsp;</td>
                                </tr>                       
                        </table>
                        </form> OSV...

Håber du kan hjælpe
Avatar billede hoejgaard Juniormester
30. juni 2005 - 18:01 #26
I den fil hvor det virker får man slet ikke lov at komme videre før der er indsat et rigtigt postnummer eller det forkerte er slettet !
Sådan skal det helst være i denne fil også..
Avatar billede hoejgaard Juniormester
30. juni 2005 - 23:44 #27
Opretter et nyt spm !
Avatar billede hoejgaard Juniormester
01. juli 2005 - 11:49 #28
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