Discussion:
Få [Enter] til at udløse et 'klik'
(for gammel til at besvare)
Bertel Lund Hansen
2018-07-23 07:50:58 UTC
Permalink
Jeg har følgende to linjer i min kode:

<p>Round number: <input type='text' id='rond_nr$n' size='4'>
<button onclick='roundFunction($n)'>Set round</button></p>

Det virker fint, men man er nødt til at klikke på knappen for at
udløse funktionskaldet. Kan man få [Enter] (i inputfeltet) til at
gøre det samme (med eller uden JavaScript)?
--
/Bertel
Kim Ludvigsen
2018-07-23 08:01:45 UTC
Permalink
Post by Bertel Lund Hansen
<p>Round number: <input type='text' id='rond_nr$n' size='4'>
<button onclick='roundFunction($n)'>Set round</button></p>
Det virker fint, men man er nødt til at klikke på knappen for at
udløse funktionskaldet. Kan man få [Enter] (i inputfeltet) til at
gøre det samme (med eller uden JavaScript)?
Du kan bruge onblur på inputfeltet, så vil funktionen udløses, når
feltet forlades (uanset om det sker med Enter eller ved at fokus flyttes
med musen).
https://www.w3schools.com/jsref/event_onblur.asp
--
Mvh. Kim Ludvigsen
Jan Hansen
2018-07-23 11:58:35 UTC
Permalink
Det overstiger mine evner, at stoppe en variabel ind i noget
addEventListener. Hvis du finder fidusen hører jeg gerne nærmere.
Men her er en lappeløsning, der finder den rigtige værdi udfra
document.activeElement.id :

for (n=0; n<3; ++n) {
if (tiDisp[n]) {
document.getElementById('rond_nr'+n)
.addEventListener("keyup", function(event) {
event.preventDefault();
if (event.keyCode === 13) {
tjekfelt();
}
});
}
}

function tjekfelt() {
x=document.activeElement.id;
for (n=0; n<3; ++n) {
if (x == 'rond_nr'+n) roundFunction(n);
}
}


Det er nok nemmere at bruge onBlur, man skal bare trykke på
tab i stedet for enter.
--
mvh Jan.
Help Microsoft stamp out piracy. Give
Linux to a friend today!
Bertel Lund Hansen
2018-07-23 12:20:44 UTC
Permalink
Post by Jan Hansen
Det overstiger mine evner, at stoppe en variabel ind i noget
addEventListener. Hvis du finder fidusen hører jeg gerne nærmere.
Men her er en lappeløsning, der finder den rigtige værdi udfra
Jeg havde prøvet noget lignende idet jeg fandt inspiration på
W3's sider, men hverken min eller din løsning virker. Da det ikke
er så vigtigt, vil jeg nok ikke kæmpe ret meget for at få det til
at du.
Post by Jan Hansen
Det er nok nemmere at bruge onBlur, man skal bare trykke på
tab i stedet for enter.
Jeg prøvede med onblur (og onfocusout), men begge har den ulempe
at et klik på de hvide omgivelser indlæser værdien fra feltet, og
det er ikke logisk.
--
/Bertel
Jan Hansen
2018-07-23 13:17:28 UTC
Permalink
Post by Bertel Lund Hansen
Jeg havde prøvet noget lignende idet jeg fandt inspiration på
W3's sider, men hverken min eller din løsning virker.
Det skulle det gerne, det virker da lokalt.
Bruger du ikke firefox ?
--
mvh Jan.
Help Microsoft stamp out piracy. Give
Linux to a friend today!
Bertel Lund Hansen
2018-07-23 13:28:42 UTC
Permalink
Post by Jan Hansen
Det skulle det gerne, det virker da lokalt.
Bruger du ikke firefox ?
Jo, og Web Console (som jeg nu har fundet ud af at bruge) melder
heller ingen fejl, men rundetallet forbliver det samme når jeg
trykker [Enter].
--
/Bertel
Jan Hansen
2018-07-23 13:58:19 UTC
Permalink
Post by Bertel Lund Hansen
Post by Jan Hansen
Det skulle det gerne, det virker da lokalt.
Bruger du ikke firefox ?
Jo, og Web Console (som jeg nu har fundet ud af at bruge) melder
heller ingen fejl, men rundetallet forbliver det samme når jeg
trykker [Enter].
Virker det her? http://www.sniper-pistol.com/bridge.html
Det er den udgave, jeg hentede og tilføjede det på.
--
mvh Jan.
Help Microsoft stamp out piracy. Give
Linux to a friend today!
Bertel Lund Hansen
2018-07-23 14:30:40 UTC
Permalink
Post by Jan Hansen
Virker det her? http://www.sniper-pistol.com/bridge.html
Ja.
Post by Jan Hansen
Det er den udgave, jeg hentede og tilføjede det på.
Mystisk. Måske kæmper jeg alligevel videre.
--
/Bertel
Dennis Munding
2018-07-23 19:33:58 UTC
Permalink
Post by Bertel Lund Hansen
<p>Round number: <input type='text' id='rond_nr$n' size='4'>
<button onclick='roundFunction($n)'>Set round</button></p>
Det virker fint, men man er nødt til at klikke på knappen for at
udløse funktionskaldet. Kan man få [Enter] (i inputfeltet) til at
gøre det samme (med eller uden JavaScript)?
Det virker (mig bekendt) kun med type="submit".

Jeg testede denne lille ændring i din kode:

<form action="#togglediv2">
<p>Round number: <input type='text' id='rond_nr2' size='4'>
<input type="submit" onclick='roundFunction(2)' value="Set round" /></p>
</form>


Umiddelbart ser det ud til at virke.

Bemærk!
Det er KUN Set round-knappen og tilhørende input-felt, der er wrappet i
form-tagget.
På den måde skulle det ikke påvirke de andre knapper/områder.
--
Med venlig hilsen

Dennis Munding
Jan Hansen
2018-07-24 06:07:32 UTC
Permalink
Post by Dennis Munding
<form action="#togglediv2">
<p>Round number: <input type='text' id='rond_nr2' size='4'>
<input type="submit" onclick='roundFunction(2)' value="Set round" /></p>
</form>
Umiddelbart ser det ud til at virke.
Det fungerer vist perfekt, når timerne er startet, kører de videre
hvor de er nået til, og de andre timere beholder deres runde numre.
Jeg fjerner mine javascript eksperimenter igen.
--
mvh Jan.
Help Microsoft stamp out piracy. Give
Linux to a friend today!
Bertel Lund Hansen
2018-07-24 08:12:45 UTC
Permalink
Post by Dennis Munding
<form action="#togglediv2">
<p>Round number: <input type='text' id='rond_nr2' size='4'>
<input type="submit" onclick='roundFunction(2)' value="Set round" /></p>
</form>
Umiddelbart ser det ud til at virke.
Smukt og enkelt. Tak.
--
/Bertel
Loading...