Parameter met spatie geeft problemen

Status
Niet open voor verdere reacties.

s5057285

Gebruiker
Lid geworden
16 mrt 2010
Berichten
104
Momenteel ben ik een jsp project aan het maken en heb ik een soort van autocomplete functie gebruikt voor een tekstvak.

Eigenlijk gebeurt er het volgende:

In de variabele r komt bijvoorbeeld dit te zitten: Accent Jobs for people

Code:
buffer = buffer + "<a href='#' onClick=inTekstvak(' "+r+" ');>" + r + "</a><br/>";

Vervolgens in mijn pagina waar het resultaat komt heb je enorm veel hyperlinks die moeten leiden naar de volgende javascript functie

HTML:
<input id="name" type="text" name="name" onkeyup="showState(this.value)">
[JS]<script type="text/javascript" >
function inTekstvak(r){
document.getElementById("name").value = r;
}
</script>[/JS]
Het resultaat zou dus moeten zijn wanneer ik op een link klik, dat heel die tekst in het tekstvak komt te staan.

Dit lukt enkel wanneer in de variabele r GEEN spaties zouden staan.

Vermoedelijk zit er iets fout in mijn "'"'" (quotes). Maar ik vind het niet.
 
Ik zie zo snel geen probleem met de code. Wat is precies de error als je iets met spaties doet? (in bv. Firefox of Chrome, druk op ctrl+shift+J voor een error console)

Verder kan het ook zijn dat je quotes, zoals je zelf al zei, fout gaan. Je kan eens proberen de quotes weg te halen:

[JS]r = r.replace("'", "\'", r);
r = r.replace('"', '\"', r);[/JS]oid.

[edit]
oh, er zitten wel fouten in je code:
[js]buffer = buffer + "<a href='#' onClick=inTekstvak(' "+r+" ');>" + r + "</a><br/>";[/js]een ONCLICK bevat Javascript code. Je moet het net zoals elk attribuut in HTML omquoten. Dus:
[js]buffer = buffer + "<a href='#' onClick='inTekstvak(\'" + r + "\');'>" + r + "</a><br/>";[/js][/edit]
 
Laatst bewerkt:
De foutmelding die Internet Explorer geeft is: "Tekenreeksconstante is niet afgesloten".
Maar ja dat wisten we al...

Als bijlage is er ook een screenshot opgenomen die de situatie toont (controleer ook statusbalk).

Ik heb mijn stukje Javacode iets herschreven zodat we al niet moeten sukkelen met de HTML-tags.

Code:
buffer = buffer + "<a href=javascript:inTekstvak(" + "\[COLOR="red"]"[/COLOR]" + r + "\[COLOR="red"]"[/COLOR]" + ");>" + r + "</a><br/>";

Zorgt ervoor dat de tekst in variabele r met quotes wordt doorgestuurd.

Als in de variabele r nu een waarde zou zitten zonder spaties dan werkt alles perfect. Maar wanneer we spaties in r hebben, dan heeft hij problemen bij het uitvoeren van bovenstaande code.


Dit kan ik helaas niet gebruiken omdat bovenstaande regel code in een dataaccess klasse in java staat en niet in mijn HTML pagina.
[JS]r = r.replace("'", "\'", r);
r = r.replace('"', '\"', r);[/JS]

PS: ik ben geen Internet Explorer gebruiker, geeft wel beter foutmeldingen m.b.t. Javascript :p
 

Bijlagen

  • foutmelding_javascript.jpg
    foutmelding_javascript.jpg
    89 KB · Weergaven: 18
PS: ik ben geen Internet Explorer gebruiker, geeft wel beter foutmeldingen m.b.t. Javascript
Nah, Firefox (of Chrome ftm.) geven daadwerkelijk betere foutmeldingen; helemaal als je met lastigere Javascript bezig gaat. Maar dit is niet echt waar deze vraag over gaat. Dus:


ik zie nu je probleem. De string waar je heen wilt werken is deze:[JS]"<a href=\"javascript:inTekstvak('" + r + "');\">" + r + "</a><br/>"[/JS]zoals je ziet kan je alleen escaped dubbele quotes gebruiken als ze worden ingesloten door dubbele quotes. Quotes blijven vervelend in JS, maargoed. Dit is de correcte code:


[JS]buffer += "<a href=\"javascript:inTekstvak('" + r + "');\">" + r + "</a><br/>"[/JS](x += y staat gelijk aan x = x + y :))
Ohja, en javascript: links zijn een beetje 1997. Beter is onchange:[JS]buffer += "<a href=\"#\" onclick=\"inTekstvak('" + r + "');\">" + r + "</a><br/>"[/JS]maar het geeft hetzelfde effect. Overgens hoeft href=# er niet bij.





:thumb:
 
Laatst bewerkt:
Inderdaad het extra escapen van die hele string heeft gewerkt!

Hartelijk dank!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan