21. november 2008 - 08:21Der er
25 kommentarer og 1 løsning
Rens clipboard for linieskift
Jeg har en form med en række textboxe, både singleline og multiline. Brugerne ønsker at kunne 'klippe' tekster fra forskellige datakilder og paste i textboxene. Hvis de klipper en tekst med et linieskift og paster i et singlelinefelt, så kommer kun teksten hen til linieskiftet med og det er der ikke tilfredshed med.
Er det muligt løbende at 'rense' indholdet i clipboardet for linieskift, fx. i en rutine placeret i Page_Load, således at indholdet i clipboadet altid er klart til at blive pasted i en textbox på formen?
hvis kilderne kommer udefra så er der et smart trick man kan lave... men ikke Serverside... du skal bruge java script:
dét man gør er at:
1. fange eventet "CTRL + V" 2. sætte focus på et textarea inden eventet rammer siden 3. lader eventet ramme siden 4. tager texten fra textarea og behandler det 5. kopiere teksten ind i destinationen.
hvis du er JS-noob kan jeg godt give dig et script til det...
<html> <head> <script> function paste(e){ var e = e ? e : window.event;
if( e.ctrlKey && String.fromCharcode(e.charCode).toLower() == "v") { document.getElementById("hidden").focus(); document.getElementById("hidden").select(); } } function pasteEnd(e, obj){ var e = e ? e : window.event;
1. paste eventet kommer, og bliver opdaget 2. inden eventet fyrer, flyttes fokus til clipboard, hvor teksten pastes 3. teksten er herefter klar i clipboard'et som kan sendes tilbage med script...
Jeg har selv brugt tricket adskillige gange, men det kræver en kontekst, hvor man kender cursorens position - og sætter tekst ind, hvor den står. Desuden er det en god idé at disable kontekstmenuen ved højreklik i feltet, så der ikke kan pastes dén vej.
Det kræver også, man ikke gemmer textarea'et med display eller visibility. I stedet giver man det 'position:absolute;height:0;width:0;border:0'.
Hmmm ... Opera understøtter ikke oncontextmenu - men heller ikke onclick, når klikket foretages med højreknappen! Hvorfor skal nordmænd også absolut lave browsere, når nu de er så gode til at pumpe olie, sejle med sivbåde og drikke træsprit? ;D
For at afslutte dette ældre spørgsmål (sdom jeg selv er skyld i ikke blev afsluttet - beklager og tak for assistance), vil jeg give den løsning, jeg endte med og det er ikke som udgangspunktet at 'rense' clipboard for uønskede tegn. Jeg tager udgangspunkt i selve tekstboksen, som skal renses:
Jeg skal med det samme sige, at jeg IKKE er en ørn indenfor dette, men jeg har samlet lidt hist og pist.
Først den virkemåde, som brugerne ønskede. Det stammer fra et registreringssystem, hvor et af felterne er et titelfelt. Brugerne sakser normalt titlen fra internettet og det man ønskede var, at efter at have overført tekst mv. til klippebordet, så ville man gerne paste den ud i textboksen og når man slap tasten, skulle teksten formatteres, så teksten stod 'pænt'.
Jeg har igen lige prøvet det og det virker altså fantastisk godt, selvom det måske ikke burde det.....
Det ligger på et firmanet, så jeg kan ikke lægge et link. Koden under 'svar' har jeg taget direkte fra programmet, men jeg vil gerne i morgen endnu en gang tjekke, at det forholder sig sådan. Hvad er du interesseret i udover koden under svar?
Et eller andet, der kan forklare, hvordan en kode, der ikke kan fungere, alligevel skulle kunne komme til at virke. Hvad der skulle forklare dette, har jeg ingen anelse om =)
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.