Avatar billede Kim Neesgaard Seniormester
06. marts 2014 - 15:07 Der er 12 kommentarer og
1 løsning

Ændret indhold i en .NET textbox skal med Javascript klikke på en knap

Jeg har en simpel testform med en textbox og en knap, som gør et eller andet. Jeg vil gerne have den funktionalitet, at hvis man indtaster et tegn i textboxen - eller som det skal være i praksis, at der pastes en tekst ind fra en stregkodelæser - så skal Javascript 'trykke' på en knap, der herefter kan udføre nogle handlinger.

Jeg har forsøgt mig lidt med TextBox3.Attributes.Add("onhaschange"... og document.getElementById..., men det synes ikke at funke.

Har I et forslag?
Avatar billede keysersoze Guru
06. marts 2014 - 16:13 #1
onchange køres først når du forlader feltet - så du skal nok nærmere kigge på keyup;

TextBox3.Attributes.Add("onkeyup", "dinfunction();");
Avatar billede Kim Neesgaard Seniormester
06. marts 2014 - 16:30 #2
Jeg havde bare tænkt i den endelige udgave at teksten skulle sendes ind vha. en stregkodelæser og så er der jo ikke en key involveret, så jeg ville hellere have, at den kunne reagere på en ændring af indholdet i tekstboksen.
Avatar billede keysersoze Guru
06. marts 2014 - 16:38 #3
Så kan du jo spørge om det i stedet for noget andet :)

Hvis data kommer fra stregkodelæseren er der vel ingen grund til en textbox - så kan du jo sende data direkte videre til din function når der bliver scannet noget.
Avatar billede Kim Neesgaard Seniormester
06. marts 2014 - 19:56 #4
Jeg nævnte det kort i spørgsmålet, men åbenbart ikke tydeligt nok - beklager!

Grunden til, at jeg spørger om en tekstbox er, at vi fik at vide af det firma, hvor vi købte stregkodeudstyret, at man skulle sende scanningen til et tekstfelt.

Hvordan kan man gøre det andet du nævner? For det lyder da smart.
Avatar billede keysersoze Guru
07. marts 2014 - 09:30 #5
Ah - det stod faktisk i spm, måske jeg bare skulle læse lidt bedre...

anyway, når jeg ikke kender mekanikken bag scanneren er det umuligt at vide om man i det hele taget kan fange nogen former for events, måske er den helt afhængig af et input felt. Er det tilfældet må den næsten også sende en eller anden form for event afsted, måske en keyup og måske en onchange (der er ikke noget der hedder onhaschange), så du må næsten bare prøve dig frem.
Avatar billede zed_one Praktikant
13. marts 2014 - 12:59 #6
Hej Neesgaard

Er du sikker på at den ikke sender det som en masse hurtige tast, hvor det sidste er et return? For jeg har sjovt nok lige lavet noget lignende med JavaScript vi skal bruge internt til tidsregistrering (vi har stregkoder på vores ordresedler) - og der benytter jeg keydown til at fange data fra stregkodelæseren.

Jeg har lavet det sådan at hvert tegn fra keydown tilføjes en variabel, og hvis den møder keycode 13 (return), evaluerer den på den samlede variabel. Variablen resettes hvert halve sekund og der checkes på at den har en bestemt længde, for at eleminere brugerhovsaer fra det tastatur der også er tilsluttet.
Avatar billede Kim Neesgaard Seniormester
13. marts 2014 - 13:25 #7
-> zed_one
Det lyder rigtig interessant - jeg vil prøve og vender tilbage.
Avatar billede zed_one Praktikant
13. marts 2014 - 13:50 #8
Jeg har her klippet det mest relevante ud af det jeg har lavet.

document.addEventListener('keydown', function(event) {
    if(event.keyCode == 13) {
        if(inputText.substr(0,2) == "50") {
            //Something
        }
        else if(inputText.substr(0,2) == "40") {
            //Something
        }
        else {
            window.alert("Hov! " + inputText);
        }
    inputText = "";
    }
    else {
        inputText = inputText + String.fromCharCode(event.keyCode);
    }
});
Avatar billede Kim Neesgaard Seniormester
14. marts 2014 - 10:08 #9
Når jeg forsøger at konvertere til VB, så får jeg:

An error occured converting your code, probably due to a syntax error: -- line 1 col 1: EOF expected

Med mit kendskab til C# har jeg forsøgt at rette syntaksen, men uden held?
Avatar billede zed_one Praktikant
14. marts 2014 - 10:33 #10
Jeg må være dig svar skyldig omkring integration med VB/C# - der rækker min viden ikke. I det hele taget er Javascript også noget jeg ikke er supernørdet i endnu.

Men det virker når jeg smider det i en .html fil som nedenstående. Variablen skulle dog lige deklareres. Ved ikke om det er det du kæmper med.

<html>

<head>
<script>
var inputText = "";
document.addEventListener('keydown', function(event) {
    if(event.keyCode == 13) {
        if(inputText.substr(0,2) == "50") {
            window.alert("50 " + inputText);
        }
        else if(inputText.substr(0,2) == "40") {
            window.alert("40 " + inputText);
        }
        else {
            window.alert("Hov! " + inputText);
        }
    inputText = "";
    }
    else {
        inputText = inputText + String.fromCharCode(event.keyCode);
    }
});
</script>
</head>

<body>
</body>

</html>
Avatar billede Kim Neesgaard Seniormester
21. marts 2014 - 13:20 #11
-> zed_one:
Et spørgsmål: hvordan får du din opsamlede streng inputText 'ud' i .NET miljøet, altså hvordan gøres den kendt for din C# kode?
Avatar billede Kim Neesgaard Seniormester
26. marts 2014 - 12:08 #12
Jeg fandt en meget enkel løsning til dette problem. Hvis man får scanneren til - udover indholdet af den aflæste stregkode - at tilføje et tabtegn, så vil cursoren efter aflæsning springe til det næste element, der har den næste tab order.
Avatar billede Kim Neesgaard Seniormester
26. marts 2014 - 12:09 #13
Tak til jer begge for input!!
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