Avatar billede stufdbear Nybegynder
20. december 2004 - 13:35 Der er 9 kommentarer og
1 løsning

Input nummer til input navn

Hejsa exp'er

Er der en som har et hurtigt script til det her:
Jeg har 2 input felter ved siden af hinanden i en tabel række på ca 80, det svinger lidt.
I det første input felt skal man indtaste et medarbejder nummer, trykke enter og så skal felt nummer to så automatisk blive udfyldt med navn eller "Ukendt" hvis nummeret ikke passer med et navn.

StufdBear
Avatar billede stufdbear Nybegynder
20. december 2004 - 13:36 #1
Må hellere lige ændre det til "trykke enter eller tab" :o)
Avatar billede skovenborg Nybegynder
20. december 2004 - 13:43 #2
Du kan prøve:
<script type="text/javascript">
var medarbejderArray = new Array();
medarbejderArray["100"] = "Konan Lurbakken";
medarbejderArray["425"] = "Gentlemann Finn";
medarbejderArray["095"] = "Werner Lohals";

function findMedarbejder(e,nr,formFelt) {
    e = (typeof e == "undefined") ? event : e;
    k = (e.which) ? e.which : e.keyCode;
    if (k == 13 || k == 9) { // Hvis man trykker enter eller tab
        formFelt.value = (medarbejderArray[nr]) ? medarbejderArray[nr] : "Ubekendt";
        return false;
    }   
}
</script>

<form>
<input type="text" name="medarbejder_nr" onkeydown="return findMedarbejder(event,this.value,this.form.medarbejder);">
<input type="text" name="medarbejder">
</form>
Avatar billede skovenborg Nybegynder
20. december 2004 - 14:00 #3
Det kræver så at du laver dette array hvor indexet er medarbejdernummeret og værdien er navnet. Dette kan dog forholdsvist let gøres med php eller asp.

Dog vil jeg gerne lave en lille rettelse, da arrayet bliver gjort unødvendigt stort når vi skriver  medarbejderArray["425"] (her bliver længden 426). Her vil det nok være en fordel hvis indexerne er helt og aldelses strenge (som ikke forveksles af browseren med tal):
var medarbejderArray = new Array();
medarbejderArray["nr100"] = "Konan Lurbakken";
medarbejderArray["nr425"] = "Gentlemann Finn";
medarbejderArray["nr095"] = "Werner Lohals";

function findMedarbejder(e,nr,formFelt) {
    e = (typeof e == "undefined") ? event : e;
    k = (e.which) ? e.which : e.keyCode;
    if (k == 13 || k == 9) { // Hvis man trykker enter eller tab
        formFelt.value = (medarbejderArray["nr"+nr]) ? medarbejderArray["nr"+nr] : "Ubekendt";
        return false;
    }   
}
Avatar billede thomas_yde Nybegynder
20. december 2004 - 14:10 #4
Du kan se om det her er noget du vil videre med:

<script>
var nummer_navn = new Array();
nummer_navn.push(new Array(12345,"jens"));
nummer_navn.push(new Array(123456,"Flemming"));
nummer_navn.push(new Array(1234567,"Ole"));

function findNavn(nummer){
    //alert(tmpArray[1]);
    for(i=0;i<nummer_navn.length;i++){
        var tmpArray = nummer_navn[i];
        if(tmpArray[0] == nummer){
            return tmpArray[1];
        }
    }
}

function indsaetNavn(nummer){
    var navn = findNavn(nummer);
    if(navn != "NaN"){
        document.getElementById("navn").value = navn;
    }
}
</script>
<input type="text" id="nummer" onKeyUp="indsaetNavn(this.value);">
<input type="text" id="navn">
Avatar billede stufdbear Nybegynder
20. december 2004 - 14:11 #5
Medarbejder numrene går fra 10000 til 90000, det vil sige at der ikke er 80000 numre men der er en 100-130 numre som ligger der imellem.
Det vil sige at hvis man laver medarbejderArray["81435"] = "Peder Pedersen" så laver den et kæmpe array på 81436 numre og det forhindre man så ved at smide nr foran?
Avatar billede stufdbear Nybegynder
20. december 2004 - 14:14 #6
Selve arrayet skal jeg nok få defineret med ASP, er bare dum til JS :o)
Avatar billede stufdbear Nybegynder
20. december 2004 - 14:47 #7
skovenborg >
Kunne du lave så når man trykker enter så virker det præcis som tab og så må du godt smide et svar :o)
Avatar billede skovenborg Nybegynder
20. december 2004 - 14:48 #8
jeg er ikke helt sikker på hvor stor forskel det gør, men hvis du kigger på arrayet jeg lavede før:
var medarbejderArray = new Array();
medarbejderArray["81435"] = "Peder Pedersen";
alert(medarbejderArray.length);

Længden bliver altså automatisk større. Det andet eksempel hvor "nr" bliver sat foran er sådan set heller ikke helt et rigtigt array, men mere et almindeligt objekt. Det er lidt svært at forklare, især da jeg ikke selv helt har fundet en forskel - men du kan evt. prøve at læse http://www.eksperten.dk/artikler/227 hvilket kan give et par svar.
Avatar billede skovenborg Nybegynder
20. december 2004 - 14:52 #9
altså at det feltet med navnet skal få fokus?

function findMedarbejder(e,nr,formFelt) {
    e = (typeof e == "undefined") ? event : e;
    k = (e.which) ? e.which : e.keyCode;
    if (k == 13 || k == 9) { // Hvis man trykker enter eller tab
        formFelt.value = (medarbejderArray["nr"+nr]) ? medarbejderArray["nr"+nr] : "Ubekendt";
        formFelt.focus(); // Sæt fokus i navne-feltet
        return false;
    } 
}

Ellers hvis det er et andet felt som skal have fokus skal:
formFelt.focus();
ændres til:
formFelt.form.FELTNAVN.focus(); hvor feltnavn er navnet på det form-element som skal have fokus.
Avatar billede stufdbear Nybegynder
20. december 2004 - 15:08 #10
Perfekt :o)
Jeg har så ændret det lidt til:

<script type="text/javascript">
var medarbejderArray = new Array();
medarbejderArray["nr100"] = "Konan Lurbakken";
medarbejderArray["nr425"] = "Gentlemann Finn";
medarbejderArray["nr095"] = "Werner Lohals";

function findMedarbejder(e,nr,formFelt) {
    e = (typeof e == "undefined") ? event : e;
    k = (e.which) ? e.which : e.keyCode;
    if (k == 13) { // Hvis man trykker enter
        formFelt.value = (medarbejderArray["nr"+nr]) ? medarbejderArray["nr"+nr] : "Ubekendt";
    formFelt.focus();
        return false;
    }
    if (k == 9) { // Hvis man tab
        formFelt.value = (medarbejderArray["nr"+nr]) ? medarbejderArray["nr"+nr] : "Ubekendt";
        return false;
    }
}
</script>
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



IT-JOB

Capgemini Danmark A/S

Security Consultant

Sydtrafik

BI-analytiker

MAN Energy Solutions

Business Analyst

Capgemini Danmark A/S

SAP Demand to Supply