emissionMedlem sedan dec. 19996 095 inlägg
Har en SELECT som populeras dynamiskt med värden som man kan skriva in en TEXTBOX. Det fungerar utmärkt, men om man stoppar in ett värde med å ä ö, så blir det helknas på serversidan, och åäö resulterar i tramsencodad text.
Dvs.
<FORM>
<SELECT>
<OPTION VALUE="thevalue" SELECTED>thevalue</OPTION>
</SELECT>
<INPUT TYPE="SUBMIT" VALUE="Skicka">
</FORM>
ger annat resultat än
<SCRIPT>
function checkForm(formref) {
formref.theselect.options[formref.theselect.options.length]=new Option(formref.thetext.value,formref.thetext.value);
formref.theselect.selectedIndex=formref.theselect.options.length-1;
return true;
}
</SCRIPT>
<FORM onSubmit="return checkForm(this);">
<SELECT NAME="theselect">
<OPTION VALUE="empty">tom</OPTION>
</SELECT>
<INPUT NAME="thetext" TYPE="TEXT" VALUE="thevalue">
<INPUT TYPE="SUBMIT" VALUE="Skicka">
</FORM>
...nu är det inte riktigt så koden ser ut, men pricipen är alltså att om javascript får skapa elementet, så encodas åäö fel.
Tips?
JohnsenMedlem sedan juli 2000718 inlägg
Bara en tanke.
<SCRIPT>
function ampStr(str){
str=str.replace(/å/g,"& aring;"); //OBS! space...
str=str.replace(/ä/g,"& auml;");
str=str.replace(/ö/g,"& ouml;");
return str;
}
function checkForm(formref) {
formref.theselect.options[formref.theselect.options.length]=new Option(formref.thetext.value,ampStr(formref.thetext.value));
formref.theselect.selectedIndex=formref.theselect.options.length-1;
return true;
}
</SCRIPT>
emissionMedlem sedan dec. 19996 095 inlägg
En bra tanke, men tyvärr inte en lösning. Javascript hanterar htmlencode-biten själv (egentligen inte, men den behöver inte det heller..).
Samma problem uppstår i ett formulär som skapats helt via Javascript (document.write). åäö fungerar inte. Exakt samma formulär skapat direkt i HTML:en fungerar klockrent. Det hela måste bero på representationen av objekten i den interna DOM:en, men vad göra? Problemet med Options gäller både IE och FireBird, medan IE är ensam om formulärproblemet.
Lösningen är säkert enkel, men väl dold....