Avatar billede mathiasiversen Nybegynder
29. september 2001 - 10:26 Der er 20 kommentarer og
1 løsning

Inputmaske i inputfelt?

Kan man lave en inputmaske i et inputfelt, eller hvordan kan man ellers løse problematiken i at få ensartet data fra brugeren?
Avatar billede keysersoze Ekspert
29. september 2001 - 10:46 #1
du kan ved hjaelp af javascript unders\'ge hvilke ting der bliver sat ind og dermed lave din inputmaske - altsaa om det kun skal vaare tal eller andet...

fx.>

if(document.create_job.job_salery.value == \"\" && error_found == 0)
{    alert(\'Du skal indtaste din løn\');    document.create_job.job_salery.focus();    error_found = 1;
}
Avatar billede jacobve Nybegynder
29. september 2001 - 11:00 #2
En anden løsning er at lade brugeren vælge hvad han vil.

fx. hvis vi taler om datoen der skal indtastes, så lade brugeren vælge dato, måned og år.
Så kan du selv indsætte det i en database i præcis det format du vil (hvis altså det var planen)
Avatar billede jacobve Nybegynder
29. september 2001 - 11:01 #3
hov det var jo Mathias... så må du lige hilse Christian fra mig... :-)
Avatar billede roenving Novice
29. september 2001 - 11:21 #4
Og når du så skal teste, det som brugeren har indtastet i et felt, så kan du med stor fordel bruge en Regular Expression til at teste med.

Og en lille udbygning af keysersozes:

<script type=text/javascript>
var error_found=0;

var felt=document.create_job.job_salary
if(felt.value == \"\" && error_found == 0){
    alert(\'Du skal indtaste din løn\');   
    felt.focus();
    error_found = 1;
}
</script>

hth
jes
Avatar billede Slettet bruger
29. september 2001 - 11:40 #5
Nogle eksempler på RegExp (Regular Expressions):

<script>
felt=document.create_job.job_salary.value

minReqExp = /^[\\d]+$/
if (!felt.match(minRegExp) alert(\"Du må kun indtaste numre!\"); //Det er nu kun tilladt at indtaste numre fra 0-9 i feltet!
</script>
Avatar billede mathiasiversen Nybegynder
29. september 2001 - 18:01 #6
Hej jacob - Jeg skal nok hilse Christian!

Kan i så komme med et eksempel, hvis jeg gerne vil have at brugeren skal indtaste datoen sådan: 29-10-2001?
Avatar billede mathiasiversen Nybegynder
29. september 2001 - 18:06 #7
Jacob - hvis jeg bruger din løsning og f.eks laver nogle selectbokse - hvordan kan jeg så få dem til at stå i dagsdato?
Avatar billede jacobve Nybegynder
29. september 2001 - 22:01 #8
lavede et lille eksempel:


<html>
<head>
<script language=\"javascript\" type=\"text/javascript\">
<!-- //gemmer script for gamle browserer
//tjekker om det er på formen 29-10-2001
re = /^\\d{2}
  • {1}\\d{2}[-]{1}\\d{4}$/

function test(formen)
{
    if (re.test(formen.dato.value))
    {
        return true;
    }
    alert(\"indtast dato på formen 29-10-2001\");
    myForm.dato.focus();
    myForm.dato.select();
}

//-->
</script>

</head>

<body>
<form method=post action=\"\" onSubmit=\"test(this)\">
    <input type=\"text\" name=\"dato\">
    <br>
<input type=\"submit\">
</form>
</body>
</html>
Der bliver bare ikke tjekket for om det er en korrekt dato.

fx. kan man godt indtaste 44-14-1000.
Men det skal være på den form... ved ikke om det kan bruges.
Avatar billede jacobve Nybegynder
29. september 2001 - 22:04 #9
der skal lige en return false; ind efter myForm.dato.select();
Avatar billede roenving Novice
30. september 2001 - 00:09 #10
Hvis du både skal have et check for f.eks. talindtastning og datoindtastning, som jacobve prøver at beskrive, bliver du nødt til at checke for datoens validitet (for lige at gøre det helt vanvittigt, så er det sådan at en dato: 33-13-2000, faktisk bliver en god nok dato, jeg tror d. 5/3-2001 -- ikke checket).

Men så skal du først checke om det grundlæggende er iorden med den der regExp, og derefter checke validiteten i datoen ved at oprette en dato, og teste den, så måske er det nemmere at sige:

function checkDate(felt){
  var verdi=felt.value;
  if (verdi.length<10||verdi.length>10)return false;
  var dag=verdi.substr(0,2);
  var maaned=verdi.substr(3,2);
  var aar=verdi.substr(6,4);
  var actDate=new Date(aar,maaned-1,dag);
  if (actDate.getDate==dag&&actDate.getMonth==maaned-1&&actDate.getFullYear==aar)return true;
  return false;
}

hth
jes
Avatar billede mathiasiversen Nybegynder
30. september 2001 - 12:18 #11
okay, jeg er sku ikke helt med! Jeg er ikke vandt til at bruge funktioner, så hvad skal udskiftes med mine navn! Jeg har prøvet lidt forskelligt men det virker ikke!
Avatar billede roenving Novice
30. september 2001 - 12:23 #12
F.eks. kan du bruge det sådan her:

<input type=\"text\" name=\"dato\" onBlur=\"if (!checkDate(this))this.focus();\">Angiv dato

Eller du kan bruge den sammen med en hel masse andet i

<body ... onSubmit=\"valider();\">

Og så fra function valider() kalde checkDate(document.formNavn.dato).

hth
jes
Avatar billede mathiasiversen Nybegynder
30. september 2001 - 12:26 #13
men skal felt i funktionen så ikke skiftes ud med ... ?
Avatar billede mathiasiversen Nybegynder
30. september 2001 - 12:28 #14
hvor kan jeg så give en fejlmeddelse?
Avatar billede roenving Novice
30. september 2001 - 12:34 #15
Felt i funktionen er en overført parameter, som bliver til en lokal variabel inde i funktionen, den behøver du ikke røre ved.

En feljmeddelelse angiver du f.eks. i linjen lige før return false eller hvis du sætter den ind i feltet:

<input type=\"text\" name=\"dato\" onBlur=\"if (!checkDate(this)){alert(\'Ulovlig dato!\\nPrøv igen\');this.focus()};\">Angiv dato

;·]
Avatar billede mathiasiversen Nybegynder
30. september 2001 - 12:34 #16
OK, når jeg bruger din roenving, så kan jeg ikke gå videre til næste felt - men heller ikke nårå jeg indtaster den rigtige dato!
Avatar billede mathiasiversen Nybegynder
30. september 2001 - 12:45 #17
noget må være galt i scriptet!
Avatar billede roenving Novice
30. september 2001 - 12:50 #18
Bemærk, at scriptet er indstillet til at tage imod 10 karakterer, det kan du lave om øverst i funktionen:

if (verdi.length<8||verdi.length>10)return false;

Så vil den også acceptere f.eks. 30-09-01, men *ikke* 30/9-2001 -- det er meget svært (læs irriterende besværligt) at teste for alle mulige datoformater, så skriv f.eks. i input\'en: \'Angiv dato (dd-mm-åååå)\'

hth
jes
Avatar billede mathiasiversen Nybegynder
30. september 2001 - 15:22 #19
det mit problem er at nu kan jeg slet ikke komme videre, fordi den bliver ved med at give min fejlmeddelse også selvom jeg taster korrekt dato!
Avatar billede mathiasiversen Nybegynder
30. september 2001 - 16:50 #20
OK, nu har jeg løst problemmet ved at indsætte selectbokse, hvor man vælger dag, måned og år - jeg kan jo så lette arbejdet lidt ved at autoselecte den dato som jeg jeg regner med at brugeren indtaster - i dette tilfælde blot dagsdato, da brugeren ofte vil vælge en dato tæt på dagsdato! Takker til jer alle!
Avatar billede jacobve Nybegynder
30. september 2001 - 16:58 #21
ok. og tak for pint, på trods af det ikke var meget hjælp jeg kom med :-)

Kan du forresten ikke sige til Christian at han godt kan tage at logge på ICQ?
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