Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Ersätta tangenttryckning i jQuery

Postades av 2013-02-22 14:05:41 - Per Hultqvist, i forum asp.net generellt, Tråden har 6 Kommentarer och lästs av 3824 personer

Hej,

Jag försöker skriva en liten snutt som automatiskt byter enkelfnutt ' mot "krullig" enkelfnutt ’.

Har försökt med kod som denna, men den fungerar inte (har bytt ut 8217 mot 65=A för att se om den ens ersätter tecknet):

            $('.textbox').keypress(function(event) {
                if ( event.which == 39 ) {  
                    var e = $.Event("keydown");
                    e.which = 8217; // Eller 65
                    e.keyCode = 8217; // Eller 65
                    $('this').trigger(e);     
	            } 
            });

Eventet anropas varje gång jag trycker på en tangent och asciikoden ser ut att vara rätt, men koden ersätter inte det inmatade tecknet. Någon som ser vad jag gör för fel? Skall det inte gå att ersätta det inmatade tecknet?


Svara

Sv: Ersätta tangenttryckning i jQuery

Postades av 2013-02-24 15:19:05 - Henry Rune Tk

Hey Per!

Jag sitter på tåget och har lite brottom, så istället för att felsöka din kod så skriver jag en lösning:
Om målet är att byta ut ' mot enkelfnutt ' mot: ’
Så borde det följande fungera:

$(document).on("keyup", ".textbox", function (e) {
	if (e.keyCode === 222) {
		$(".textbox").val(function(i, val) {
			return val.replace(/'/g, "’");
		});
	} 
});


Testa, och återkom gärna men flera frågor!

Mvh,
Henry Tang Kai - Frontendutvecklare - OnTrax AB


Svara

Sv:Ersätta tangenttryckning i jQuery

Postades av 2013-02-24 15:24:57 - Per Hultqvist

Hej,

Intressant, skall testa den på jobbet imorgon !

/Per


Svara

Sv: Ersätta tangenttryckning i jQuery

Postades av 2013-02-25 12:20:45 - Per Hultqvist

Hej,

Följande kod fick jag nästan att fungera (notera att jag ändrade tilll "keypress" i st f "keyup") :

	    $(document).on("keypress", ".textbox", function (e) {
                if (e.keyCode === 39) {
                    $(".textbox").val(function(i, val) {
                        return val.replace(/'/g, "’");
                    });
                } 
            });

Problemet är dock att den inte ersätter första inmatatade enkelfnutten förrän man matat in en andra fnutt, då ersätts båda. Har du någon aning om vad det kan bero på? Jag är som sagt grön på jQuery så alla tips mottages med stor tacksamhet...


Svara

Sv:Ersätta tangenttryckning i jQuery

Postades av 2013-02-25 13:54:03 - Henry Rune Tk

När jag skrev koden så testade jag i jsFiddle + FireFox, där fungerade det perfekt.
Jag provade din kod, men i FireFox så funkar det inte alls med "keypress" eller med värdet "39".
39 är ASCII koden, och 222 är keypress koden.

1. "Keydown" eventet sker när en tangent har tryckts,
2. Direkt efter det sker "keypress",
3. och till sist sker "keyup" när tangenten har släppts.

Jag testade vidare i Chrome och där fungerade din senaste kodsnitt.

Nu har jag lagt på lite så att det fungerar i både och, precis när man har tryckt:

$(document).on("keypress keyup", ".textbox", function (e) {
    if (e.keyCode == 39 || 222) {
        $(".textbox").val(function(i, val) {
            return val.replace(/'/g, "’");
        });
    }
});


Kan du testa det på din miljö, och gärna flera webbläsare och återrapportera?

Mvh,
Henry Tang Kai - Frontendutvecklare - OnTrax AB


Svara

Sv: Ersätta tangenttryckning i jQuery

Postades av 2013-02-25 14:19:28 - Per Hultqvist

Nu fungerar det perfekt! Tusen tack!

Jag har dock några följdfrågor :

1) Varför skriver du /'/g och inte "'" (dubbel, enkel dubbel)? Är det specialsyntax för jQuery? Båda syntaxen fungerar, är bara nyfiken...

2) Vad gör de olika "val" nedan?

$(".textbox").val(function(i, val) {
    return val.replace(/'/g, "’");
});

Min gissning är att tredje "val" refererar till argumentet (andra "val"), dvs vi hade lika gärna kunnat skriva:
$(".textbox").val(function(i, text) {
    return text.replace(/'/g, "’");
});

medans första "val" refererar till en jQuery-funktion? Har jag förstått koden rätt? Jag började skriva jQuery-kod för bara ca en vecka sedan, så ha tålamod med mig :-)

Vidare så är det för mig bara intressant att få det att fungera i IE, då vi talar om en Intranätapplikation som är ca 10 år gammal och vi är redan fast i IE då vi använder massor med HTC-filer av historiska skäl. Dock var ovanstående problem ett första steg i att få bort ytterligare en HTC-fil från projektet, så vem vet, en dag kanske vi kan köra det i andra browsers också. Just nu kan jag dock inte testa det i andra browsers...

Än en gång, tusen tack för hjälpen...


Svara

Sv:Ersätta tangenttryckning i jQuery

Postades av 2013-02-25 16:45:03 - Henry Rune Tk

1) /'/g är en s.k. regex där 'g':et betyder "global" d.v.s. ersätt alla instanser av ' med ’

Om vi använde alternativet "'" istället för regex:en, och en användare skulle t.ex. klistra in en sträng som innehåller flertal stycken: ''''''''''''''''''''''''''
- så skulle bara det första tecknet konverteras vid nästa keystroke - och resten konverteras en och var för sig vid varje konsekventa keystroke.

Med en global regex så konverterar den alla instanser samtidigt.

Det är kanske ett sällsynt scenario men det kan vara värt att förebygga alla möjligheter.


2) - du har rätt i din gissning, du kan* ersätta val #2 och #3 mot t.ex. variabelnamnet "text".

Mvh,
Henry Tang Kai - Frontendutvecklare - OnTrax AB


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 159
27 952
271 704
976
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies