Avatar billede perh Juniormester
10. maj 2005 - 15:17 Der er 7 kommentarer og
1 løsning

urlencode input value før submit?

Jeg kan ikke overføre mellemrum i tekststrenge gennem et betalingssystem.

Jeg har et inputfelt, hvis value jeg gerne vil have urlencoded
<input name="ordertxt" value="">
Hvordan kan jeg sørge for at det bliver urlencoded (eller " " erstattet med "_") før submit af formen?
Avatar billede busschou Praktikant
10. maj 2005 - 15:23 #1
du kan i alt fald bruge javascript til en replace
<form name="myform" onsubmit="this.input1.value=this.input1.value.replace(' ','_')">
<input type="text" name="input1">
</form>
Avatar billede perh Juniormester
10. maj 2005 - 19:05 #2
Det virker desværre ikke:

<form method="post" action="/auth/" onsubmit="this.%%ordretxt2%%.value=this.%%ordretxt2%%.value.replace(' ','_')">

jeg skal have de der %% i variablen for at få det igennem, men der kommer kun det første ord af ".%%ordretxt2%%" med over?
Avatar billede busschou Praktikant
10. maj 2005 - 19:52 #3
så er jeg lost. for sådan troede jeg ikke man kunne navngive
Avatar billede perh Juniormester
10. maj 2005 - 21:49 #4
Nej - der skal noget PHP til - jeg kan bare ikke selv regne det ud, når det ligger i formen.
variablen virker når jeg sætter en streng uden mellemrum eller med _ i st f mellemrum
Avatar billede perh Juniormester
10. maj 2005 - 22:16 #5
Jeg kan faktisk godt få det til at virke, men kun på det første mellemrum i strengen, ved at sætte det ind i inputfeltet:
onBlur="this.value=this.value.replace(' ','_');"
så det skal ligesom være "så længe der er mellemrum i value, skal der erstattes."
Men det skal nok flyttes over i javascript afdelingen.

Kan det her oversættes til PHP:
SCRIPT LANGUAGE="JavaScript">
<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->
<!-- Begin
function replaceChars(entry) {
out = "a"; // replace this
add = "z"; // with this
temp = "" + entry; // temporary holder

while (temp.indexOf(out)>-1) {
pos= temp.indexOf(out);
temp = "" + (temp.substring(0, pos) + add +
temp.substring((pos + out.length), temp.length));
}
document.subform.text.value = temp;
}
//  End -->
</script>
</HEAD>

<!-- STEP TWO: Copy this code into the BODY of your HTML document  -->

<BODY>

<center>
<form name="subform">

<input type=text name=text size=40 value="abcdabcd" onBlur="replaceChars(this.value);"> 

</form>
</center>
Avatar billede olebole Juniormester
11. maj 2005 - 02:05 #6
<ole>

<input type=text name=tekst size=40 onBlur="this.value=this.value.replace(/ /g, '_');">

/mvh
</bole>
Avatar billede perh Juniormester
11. maj 2005 - 11:32 #7
Ja, det fungerer fint, tak
det er bedre end min escape(this.value), som så forfærdeligt ud onBlur
Desværre virker det nemlig ikke på onSubmit - måske fordi formen har en valideringsrutine på onSubmit?
Avatar billede olebole Juniormester
11. maj 2005 - 15:23 #8
Takker ... faktisk kan man bare kalde begge funktioner i handleren:
  onsubmit="return validate(this)&&doMyShit(this)"

- samtidigt med, du sørger for, at doMyShit altid returnerer true. Så vil formen submittes, dersom validate returnerer true - men ikke, hvis der returneres false  :)

Endnu en mulighed er at lægge replace'en i slutningen af validerings funktionen
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