---
title: "Förhindra att &quot; skrivs om till \" tecken i ett fält"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/171183-förhindra-att-quot-skrivs-om-till-tecken-i-ett-fält"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "haider"
published: "2008-05-01T07:55:39.000Z"
updated: "2008-05-03T09:21:52.000Z"
replies: 36
views: 2029
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/171183-förhindra-att-quot-skrivs-om-till-tecken-i-ett-fält"
---

# Förhindra att &quot; skrivs om till " tecken i ett fält

_Sida 1 av 2._

## #1 — haider, 2008-05-01T07:55Z

Jag har ett perl skript som skriver in fält till en text-fil för att senare läsa in dem i diverse sammanhang.
En slags databas så att säga. Väldigt old-fashion antar jag.

När jag i ett fält skriver texten "**3&quot; hårddiskar**" och sparar fältet till databasen (som är i txt-format) så kan jag se att den sparar det som jag skrev det i fältet.
Men när perl-skriptet refreshar och läser in informationen från textfilen står det numera ***3,5" hårddiskar*** i fältet. Det är okej egentligen, för vad den gör är att den troligen omvandlar **&quot;** till **"** men så snart jag sparar så sparas **"-tecknet** istället för **&quot;** till textfilen och då blir det problem.

Så jag undrar om javascript kan göra om **"-tecknet** till **&quot;** i bakgrunden, så att vare sig jag skriver ett "-tecken manuellt eller att det redan står där när jag sparar, så sparas det som &quot; i textfilen.

Förtydligande: Varför jag över huvudtaget behöver spara om något är att det givetvis finns fler vält i en databasrad förutom det fält där jag behöver skriva "-tecken.
De andra fälten kan jag behöve spara rätt ofta och det är bara jobbigt att behöva gå in och ändra " till &quot; för jämnan.

Permalänk: https://www.webforum.nu/p/171183

## #2 — Fredde Mannen, 2008-05-01T08:27Z

Javascript: 

```
stringObject.replace('"','&quot;');
```

Kanske, kan funka.. :)

Permalänk: https://www.webforum.nu/p/2104314

## #3 — haider, 2008-05-01T08:48Z

tjena fredde, tackar!

hur hade du tänkt att den används? Varje gång man trycker en knapp eller vid submit?

Permalänk: https://www.webforum.nu/p/2104325

## #4 — Fredde Mannen, 2008-05-01T08:51Z

Förmodligen vore väl kanske enklast att använda vid submit. Du kan ju iofs testa först, för att se så att det funkar.

Permalänk: https://www.webforum.nu/p/2104326

## #5 — haider, 2008-05-01T09:48Z

Okej.

Först skulle jag testa och då skrev jag nåt jätteenkelt, men tydligen skrev jag fel för det funkar inte:

```
<script>
	function testFN() {
	
		var oldtext = document.textfield.value;
		var newtext = oldtext.replace(/\"/, "&quot;");
		
		document.textfield.value = newtext;
		window.alert(oldtext);
	}
</script>

<input type="text" name="textfield" onchange="testFN()" />
```

Enligt [den här sidan](http://www.w3schools.com/jsref/jsref_replace.asp) så skriver man replace som jag gjorde ovan, det vill säga replace(/from something/, "to something") och då kör man inte med citatstecken på första strängen.
\\" ska man väl skriva när man vill klämma in ett citatstecken mitt i javascript eller hur?

Felet jag gör tycks vara document.textfield.value - hur ska man skriva?

tillägg:
Strunt i länken ovan, för det går alldeles utmärkt att skriva '"'. Jag skrev detta med gott resultat:

```
<script type="text/javascript">var str="En 3,5\" h&aring;rddisk";

document.write(str.replace('"', "&quot;"));</script>
```

Så nu måste jag bara fatta hur man kan utläsa value ur en input-tagg.

Permalänk: https://www.webforum.nu/p/2104336

## #6 — stattin, 2008-05-01T10:41Z

Du måste ange ett namn på formen också.

```

<form name="minform">

document.minform.textfield.value
```

sen finns det säkert minst tre sätt till att göra det på som säkert någon kommer att visa dig.   :)

Permalänk: https://www.webforum.nu/p/2104346

## #7 — Fredde Mannen, 2008-05-01T10:45Z

eller om man bara har en form på sidan: 

```
document.forms[0].fieldname.value
```

:)

Permalänk: https://www.webforum.nu/p/2104348

## #8 — haider, 2008-05-01T10:46Z

Jag ville fråga om man måste ha form, för alla tutorials visar exempel med form, men jag lät bli för att slippa få svaret ja :) och i hopp om att få ett andra alternativ. Men det tycks vara så att form krävs.

Ska testa det snart.

edit: tack Fredde, ska ta med ditt tips i beaktning

Permalänk: https://www.webforum.nu/p/2104349

## #9 — Fredde Mannen, 2008-05-01T11:01Z

Jo du kan ju använda dig av andra metoder, om varje inputfält har ett specifikt id, så kan man ju använda: 

```
document.getElementById('id');
```

 Eller gå via tag-namnet 

```
document.getElementsByTagName('input')
```

Då får man en array med alla "input" element. Där första inputfältet i array är: 

```
document.getElementsByTagName('input')[0];
```

Alla vägar bär till Rom. :P

Dock är en del mer eller mindre långsökta vägar. :)

Permalänk: https://www.webforum.nu/p/2104352

## #10 — nitro2k01, 2008-05-01T11:04Z

När du kör med en regexp med två / behöver du inte escape:a citat-tecknet. *Däremot* rekommenderar jag dig att ändra regexpen till /"/g vilket gör att alla förekomster av " matchas, inte bara den första.

Permalänk: https://www.webforum.nu/p/2104354

## #11 — haider, 2008-05-01T12:27Z

Fredde: Jag tror att den mest lämpliga är document.getElementById('id'); då det är lätt att bara tilldela ett ID åt den textruta som jag ska köra lösningen på.

Nu funkar det för övrigt, jag behöver bara komma på hur jag ska lösa subtmit-grejen.
Formuläret är uppbyggt så här:

```
<form method="post" action="search.pl">
```

Så på nåt sätt måste jag köra både scriptet vid submission (alternativt vid onChange eller vad tycker du?) samt action:et som nämns ovan.

Nitro: Kan man skriva /"/ eller måste det vara /\\"/, det vill säga att "-tecknet måste skrivas om till \\" ?

Permalänk: https://www.webforum.nu/p/2104381

## #12 — stattin, 2008-05-01T12:34Z

onSubmit?

```

<form method="post" onSubmit="return dinFunktion()" action="search.pl">

<script>

function dinFunktion() {

 alert(Så här?')
 return true;

}

</script>
```

Problemet med att validera i js är att man kan stänga av javascript i webbläsaren och på så sätt komma runt det hela. Kan ju ställa till en hel del.

Permalänk: https://www.webforum.nu/p/2104383

## #13 — nitro2k01, 2008-05-01T12:39Z

Så här: escape behövs för att infoga tecken som annars hade tolkats som kontrolltecken. I en vanlig sträng måste du alltså skriva \\" för att infoga ett " eller \\\\ fö att infoga \\. Däremot behöver du inte skriva \\/ eller \\\* i en vanlig sträng.
Däremot i en regexp skriven med /-notation så är inte " ett kontrolltecken och kan skrivas utan escape. Däremot så måste du escape / och \* som annars skulle betyda "Regexpen slutar här" (På samma sätt som " hade betytt strängen slutar här i en sträng) respektive "Matcha samma tecken 0, 1 eller flera gånger."

Permalänk: https://www.webforum.nu/p/2104384

## #14 — Fredde Mannen, 2008-05-01T13:40Z

Bara en liten fundering, varför löser du inte detta via perl iställe? :)

Permalänk: https://www.webforum.nu/p/2104398

## #15 — haider, 2008-05-01T13:41Z

Statting: awesome! Stort tack.
Vad gäller att användaren stänger av javascript så undrar jag dels om folk gör det och isåfall hur stor andel. Sen kan jag tillägga att hela sidan troligen kommer att vara totalt handikappat när man stänger av javascript att just den här enstaka grejen inte kommer att fungera är nog "inte hela världen".
Användaren lär upptäcka att sidan kräver javascript :)

Nitro: Vänta nu, har jag förstått dig rätt? Uppe skrev du /"/g. Är det felstavat eller ska g:et finnas med? Om g:et var en felstavning så betyder det att du rekommenderar /"/ utan att man escapar citatstecknet, inte sant?

Hur som helst så verkar det som om lösningen kan vara meningslös eftersom den måste tillämpas omvänt.

Just nu har vi lyckats spara om  "  till  &quot;  vilket jag trodde var vad som behövdes.
Det ledde till att perl-skriptet outputtade något som såg ut så här:

```
<a href=&quot;/kategori/index.html&quot;>
```

Det blev helt knasigt.

När jag bad den att spara  "  tecknet till txt-filen så gick det bra vid outputten, då blev sökvägen korrekt:

```
<a href="/kategori/index.html">
```

Det som blev fel (och som är upphovet till tråden) var i admin-sidan där jag alltså anger sökvägen i textrutan.
Problemet sker av följande skäl.
Input taggen ser ut så här:

```
<input type="text" name="andrafalt5" value="<!--esparam:artikel:5-->">
```

**\<!--esparam:artikel:5--\>** läses in med hjälp av perl skriptet från textfilen och den inehåller en rad som ser ut så:

```
Kategori > <a href="/kategori/index.html">Väskor</a>
```

Var för sig fungerar de två raderna.
Men tillsammans får jag följande output.

```
<input type="text" name="andrafalt5" value="Kategori > <a href="/kategori/index.html">Väskor</a>">
```

Det är då som input-taggen bryts.
Jag trodde att lösningen var att konvertera om citatstecknen till &quot; skulle lösa fallet.
Det gjorde det ju delvis; Den bröt inte inputtaggen, men outputen var värdelös som jag skrev uppe.

Den lösning jag kommer på är att jag med javascript kör en print-funktion som printar ut input-taggen enligt nedanstående för att slippa citatteckensproblemet. Typ nåt sånt:

```
<script language=JavaScript>document.write("<input type=\"text\" name=\"andrafalt5\" value=\"<!--esparam:artikel:5-->\">")</script>
```

Ska testa nu.
Men om någon har något förslag vill jag gärna höra det, för jag vet att all kod jag lyckas få ur mig är fulhacks   :bire

Permalänk: https://www.webforum.nu/p/2104399

## #16 — haider, 2008-05-01T13:44Z

Fredde: Såg just ditt svar.
Jag är egentligen ingen programmerare och jag har tools som jag använder mig av. Ett av toolsen var i perl. Jag är osäker på om det ens går att lösa det på perl-nivå, men om du tittar på ovanstående problemställning så klarnar det om varför problemet finns.

Permalänk: https://www.webforum.nu/p/2104400

## #17 — nitro2k01, 2008-05-01T13:56Z

> **haider skrev:**
>
> Nitro: Vänta nu, har jag förstått dig rätt? Uppe skrev du /"/g. Är det felstavat eller ska g:et finnas med? Om g:et var en felstavning så betyder det att du rekommenderar /"/ utan att man escapar citatstecknet, inte sant?

Prexisum cisum lupidus correctum. " utan escape. Och g står för global som betyder att regexpen får tillåtelse att matcha flera gånger.

Permalänk: https://www.webforum.nu/p/2104406

## #18 — haider, 2008-05-01T14:09Z

Nitro: Aha, det var nya grejer för mig. Det värsta med att inte kunna saker är att man inte ser skillnad mellan en felstavning och något som ska vara där. Ja, man är lite pinsam mitt bland er duktiga programmerare :D

Permalänk: https://www.webforum.nu/p/2104412

## #19 — stattin, 2008-05-01T14:31Z

Hmm? men är det inte taggarna som ställer till det då?

Börja med att ändra till enkel snuffar så slipper du escapa.

```

<script language=JavaScript>document.write([B]'[/B]<input type="text" name="andrafalt5" value="<!--esparam:artikel:5-->">[B]'[/B])</script>
```

 

Kör sedan replace på alla snuffar så det blir enkelsnuffar och replaca taggarna  \< = &lt;  \> = &gt; , är jag fel ute om jag tänker så.

så borde det ju se ut så här:

```

<input type="text" name="andrafalt5" value="Kategori &gt; &lt;a href='/kategori/index.html'&gt;Väskor&lt;/a&gt;" />
```

 

eller nått  :OO 

Sen tror jag perl har en fiffig lösning på det hela men jag är inte insatt i perl.

Permalänk: https://www.webforum.nu/p/2104421

## #20 — haider, 2008-05-01T14:49Z

Stattin: Ska titta på ditt förslag med.

Här är meddelandet jag skrev precis och det var innan jag tog dina förslag med i beräkningen. I'll be back som sagt :)
\----------
Okej, jag måste fastställa att javascriptlösningen inte skilde sig i resultat från hur det var.

Jag har en känsla av att man kan lämna allt som det är förutom när det kommer till \<!--esparam:artikel:5--\> grejen. Eftersom den innehåller citatstecken och andra tecken som kan krocka så måste den på nåt sätt skrivas om vid inläsning och vid inläsning endast. När man sparar ska den sparas utan krumelurara som kommer till vid omskrivning. Frågan är hur.

När jag i Dreamweaver skriver in texten:

```
Tillbehör > <a href="/bags/index.html">Väskor</a>
```

i en text-ruta så skrivs den om (är inte säker om det är Dreamweaver som skriver om den eller om det är obligatoriskt) till:

```
Tillbehör &gt; &lt;a href=&quot;/bags/index.html&quot;&gt;Väskor&lt;/a&gt;
```

Kanske är detta lösningen? I så fall undrar jag hur omskrivningen sker och hur man kan göra en sådan omskrivning genom javascript.

Eller vänta nu.. (det här inlägget känns mer som en monolog, så jag ber om överseende   :r )
Jag ska testa replace-lösningen vid inläsningen! I'll be back!   :h

Permalänk: https://www.webforum.nu/p/2104424

---

Tråden på webben: https://www.webforum.nu/amne/javascript/171183-förhindra-att-quot-skrivs-om-till-tecken-i-ett-fält  
Nästa sida: https://www.webforum.nu/amne/javascript/171183-förhindra-att-quot-skrivs-om-till-tecken-i-ett-fält/page2.md
