Avatar billede jacob_m Nybegynder
10. april 2006 - 14:56 Der er 16 kommentarer og
2 løsninger

Forhindre og slet tastetryk

Hey.. Som mange andre har opdaget kan tegnet ' lave meget ballade i ens script.. Og da jeg er igang med at udvikle et mindre CMS vil jeg gerne have lavet en lille funktion i (D)HTML, som kan fange dette tastetryk og slette det fra formen når det bliver skrevet (og helst også gerne kopieret ind!

Har fundet ud af hvordan man laver en alert når der trykkes på ', men kan ikke få det fjernet fra et textarea igen..

<script language="JavaScript1.2">
var hotkey=39
var alert_msg="Det er forbudt at bruge ' i denne editor.."
if (document.layers)
document.captureEvents(Event.KEYPRESS)
function input_fail(e){
if (document.layers){
if (e.which==hotkey)
alert(alert_msg);
}
else if (document.all){
if (event.keyCode==hotkey)
alert(alert_msg);
}
}
document.onkeypress=input_fail

</script>


Mit problem er ikke så meget databasen, da jeg bruger PHP og addslasher og bagefter stripslaser.. Meen det er min richtext-editor der ikke kan lide det.

/ Jacob
Avatar billede mclemens Nybegynder
10. april 2006 - 21:29 #1
Sådan?

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<style type="text/css">

</style>

<script type="text/javascript">
<!--

var hotkey=39
var alert_msg="Det er forbudt at bruge ' i denne editor.."

function chkkey(e){
if(document.layers)currentk=e.which;
else if (document.all)currentk=event.keyCode;

if(currentk==hotkey){
  alert(alert_msg);
  return false;
}else return true;
}

//-->
</script>

</head>

<body>

<input type="text" name="editor" onkeypress="return chkkey();">

</body></html>
Avatar billede mclemens Nybegynder
10. april 2006 - 21:30 #2
arg firefox :P
Avatar billede mclemens Nybegynder
10. april 2006 - 21:40 #3
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<style type="text/css">

</style>

<script type="text/javascript">
<!--

var hotkey=39
var alert_msg="Det er forbudt at bruge ' i denne editor.."

function chkkey(event){
alert(event.keyCode)

if(currentk==hotkey){
  alert(alert_msg);
  return false;
}else return true;
}

//-->
</script>

</head>

<body>

<input type="text" name="editor" onkeyup="return chkkey(event);">

</body></html>
Avatar billede mclemens Nybegynder
10. april 2006 - 21:43 #4
og forkert script samt body...
det var mit test dokument :/
det ville nu være rart med edit eller delete på ens indlæg...
her er det rigtige :)


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<style type="text/css">

</style>

<script type="text/javascript">
<!--

var hotkey=191
var alert_msg="Det er forbudt at bruge ' i denne editor.."

function chkkey(event){
if(event.keyCode==hotkey){
  alert(alert_msg);
  return false;
}else return true;
}

//-->
</script>

</head>

<body>

<input type="text" name="editor" onkeydown="return chkkey(event);">

</body></html>
Avatar billede mclemens Nybegynder
10. april 2006 - 22:18 #5
(og helst også gerne kopieret ind!
- Av, den overså jeg... så skal formen istedet overvåges ved hver ændring og
'-er skal slettes samt en alert dukke op hvis der blev slettes nogle...
Avatar billede roenving Novice
11. april 2006 - 18:03 #6
Hvad med bare at fjerne tegnet ?-)

<input type="text" onkeyup="this.value=this.value.replace(/\'/g,'');">
Avatar billede mclemens Nybegynder
12. april 2006 - 00:37 #7
... virker ikke helt hvis man kopierer det ind ...
Eksempel: Marker en apostrof og kopier ind i udklipsholder
herefter tryk på indsættelsespunkt med højre museknap og vælg sæt ind.
- eller vælg indsættelses punkt med venstre museknap og i browserens
menu panel tryk på rediger knappen og vælg sæt ind...
med hvad med en onsubmit ... vi kan selvfølgelig
godt beholde onkeyup samtidig :)


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<style type="text/css">

</style>

<script type="text/javascript">
<!--

var alert_msg="Det er forbudt at bruge ' i denne editor...\nDette tegn er blevet fjernet..."

function chkkey(curnode){
if(curnode.value.indexOf("'")>-1)alert(alert_msg);
curnode.value=curnode.value.replace(/\'/g,'');
return true;
}

//-->
</script>

</head>

<body>

<form method="GET" action="#12345" name="minformular" onsubmit="return chkkey(this.mintekstboks);">

<input type="text" name="mintekstboks" onkeyup="this.value=this.value.replace(/\'/g,'');">

  <input type="submit" value="Send" name="afsender">
  <input type="reset" value="Nulstil" name="fortryder">

</form>
</body></html>
Avatar billede mclemens Nybegynder
12. april 2006 - 00:37 #8
med hvad med en onsubmit ... -> men hvad med en onsubmit ...
Avatar billede roenving Novice
13. april 2006 - 17:49 #9
Nej, onkeyup virker per definition ikke når man kopierer ind, men da man skal duplikere enhver validering af data, man laver client-side, i sin serverside håndtering er det vel ikke et problem ?-)
Avatar billede mclemens Nybegynder
13. april 2006 - 17:58 #10
... jeg ville også sætte en ereg_replace på ' ved serveren istedet ...
... det ville være det nemmeste - men hvis nu der er en bruger der
indtaster et ' er det selvføgelig rart at brugeren får at vide at
disse tegn vil blive slettet... eller bedre endnu at tegnet evt.
blev erstattet af dens html entity istedet af serveren...
Avatar billede mclemens Nybegynder
13. april 2006 - 18:14 #11
hov, kører selv lidt af sporet nu :P
problemet var at rich text editoren ikke kunne lide '-er ...

- så en onkeyup i http://www.eksperten.dk/spm/701937#rid6202797
tillader at '-en indsættes hvorefter alle '-er fjernes...

- mens onkeydown i http://www.eksperten.dk/spm/701937#rid6201033
ikke tillader at tegnet bliver indsat.
Avatar billede mclemens Nybegynder
13. april 2006 - 18:15 #12
... medmindre den kopieres ind :P
Avatar billede mclemens Nybegynder
13. april 2006 - 18:20 #13
men onkeydown i http://www.eksperten.dk/spm/701937#rid6201033
sammen med onchange="this.value=this.value.replace(/\'/g,'');"
som roenving foreslog er nok det mest optimale :/
Avatar billede jacob_m Nybegynder
30. april 2006 - 20:01 #14
Takker... Det har løst mit problem, sammen med at jeg embed richtext editoren anderledes.. Mange tak.. ligger i et svar, hvis folk ville have dette? :-)
Avatar billede mclemens Nybegynder
30. april 2006 - 20:54 #15
ok :)
Avatar billede roenving Novice
01. maj 2006 - 14:00 #16
Oki '-)
Avatar billede roenving Novice
15. august 2006 - 12:05 #17
-- og tak for point ;~}
Avatar billede mclemens Nybegynder
15. august 2006 - 12:28 #18
Tak for point også :)
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