Avatar billede berglund Nybegynder
09. januar 2002 - 11:56 Der er 16 kommentarer og
1 løsning

Flere TEKST-submit

Spørgsmål http://www.eksperten.dk/spm/45969 forklarer hvordan man skelner mellem to forskellige submitknapper i samme form. Hvordan gør man det hvis man skal bruge tekstlinks?

Jeg kan se en del forklaringer på eksperten.dk der forklarer hvordan man laver tekst-submitknapper med javascript og anchor-tag, men ingen forklarer hvordan man kan lave to forskellige.
Er der nogen som kan hjælpe mig her?
Konkret:
<form name=foobar ...>
...
  <input type=submit name=OK value=OK>
  <input type=submit name=edit value=edit>
</form>
til:
<form name=foobar ...>
...
  <a href=\"java script:???\">OK</a>
  <a href=\"java script:???\">edit</a>
</form>
Avatar billede Slettet bruger
09. januar 2002 - 12:01 #1
Du kan gøre sådan her:

<script language=\"JavaScript\" type=\"text/javascript\">
<!--
function getsupport ( selectedtype )
{
document.supportform.supporttype.value = selectedtype;
document.supportform.submit();
}
// --->
</script>

<a href=\"java script:getsupport(\'send\')\">Send</a>&nbsp;&nbsp;&nbsp;<a href=\"java script:getsupport(\'clear\')\">Ryd</a>

så skal din form blot hedde supportform
Avatar billede berglund Nybegynder
09. januar 2002 - 12:06 #2
Ok, det var sandelig hurtigt svaret!

Jeg har et par yderligere spørgsmål. Jeg har taget problemet ud af en større sammenhæng, og jeg har índtryk af at det som er væsentlig der, er name-tag\'en. Det vil sige at skriptet kigger efter hvilken submit-knap der er trykket på, og ikke hvilken value der er tildelt?
Jeg har ikke mulighed for at ændre skriptet, men har fuldrådighed over html-koden.

Kan du modificere dit svar så det kommer til at passe til det nærmere speciferet krav?
Avatar billede nikolajdu Nybegynder
09. januar 2002 - 12:28 #3
berglund - Hvorfor har du overhovedet flere submit knapper??? Det lyder nemlig her som i dine andre spørgsmål som om du kun har én form.

Kan du ikke forklare præcist hvad det er du vil??

Hvis det er fordi der skal sendes til forskelligeside, så ville jeg i stedet for flere submitknapper vælge at sætte ny action på formen.

<input type=\"button\" onclick=\"this.form.action=\'side1.html\';this.form.submit()\">
<input type=\"button\" onclick=\"this.form.action=\'side2.html\';this.form.submit()\">

/Nikolaj
Avatar billede nikolajdu Nybegynder
09. januar 2002 - 12:32 #4
Eller for at følge dit eks.:

  <a href=\"java script:document.foobar.action=\'ok.html\';document.foobar.submit()\">OK</a>
<a href=\"java script:document.foobar.action=\'edit.html\';document.foobar.submit()\">edit</a>
Avatar billede berglund Nybegynder
09. januar 2002 - 12:45 #5
Kære deltagere!

Ok, så skal jeg prøve at udstikke rammenerne for opgaven. Jeg er ved at modificere en brugerflade på et avanceret konference/community-program der hedder webcrossing (webcrossing.com). Ved hjælp af noget særlig kode kan man flytte rundt på en lang række elementer og ændre i brugerfladen. Men det er uhyre svært (læs:umuligt) alt lave om i den måde de forskellige procerdurer foregår.

I det eksempel som jeg har givet har brugen muligheden for at acceptere sine valg, eller endnu en gang rette i forlaget (hhv OK og Edit). Form-tagen skal ikke ændres da det bliver sendt til samme \"fil\" (det fungerer lidt specielt).
Det vil sige, at jeg er tvunget til at to forskellige submitfunktioner (ok og edit) defineret ved hver sin \"name\"-tag. Det fungerer sådan set også fint med en almindelig knapfunktion, men hvis jeg vil lave dem om til tekstknapper kommer jeg til kort.

Er der altså nogen mulighed hvorpå man kan tildele et link en name-værdi i forbindelse med en submit-event. Eks:
<a href=\"document.foobar..this.name(\'ok\');document.foobar.submit()>ok</a>
<a href=\"document.foobar..this.name(\'edit\');document.foobar.submit()>edit</a>

(syntakten er selvfølgelig helt hen i vejret, men det skulle gerne illustrere hvad jeg tænker på).

Er det forklaring nok?

Avatar billede nikolajdu Nybegynder
09. januar 2002 - 12:52 #6
Du vil sende folk til den samme side ligegyldigt hvad?? Det forstår jeg intet af :))

Nu ved jeg ikke hvad det er lavet i, men du har en mulighed for at sende en ekstra variabel med istedet.

Altså lidt alá det du er inde på.

<form name=foobar\" action=\"denSideJegSkalHenPaa.html\" method=\"GET\">
<input type=\"hidden\" name=\"whatValue\">
<a href=\"document.foobar.whatValue.value=\'ok\';document.foobar.submit()>ok</a>
<a href=\"document.foobar.whatValue.value=\'edit\';document.foobar.submit()>edit</a>
</form>

Så sender den resultatet af whatValue over på den næste side. Her kan det så trækkes udigen med javascript og med lidt if/else scriptes den rigtige værdi så ind. Er det en løsning??

/Nikolaj
Avatar billede berglund Nybegynder
09. januar 2002 - 13:08 #7
Nej, jeg har ingen mulighed for at bestemme hvordan den skal forholde sig hhv. value- og name-elementerne. Jeg kan KUN ændre i HTML-koden på den side som sender informationerne. Hvordan de bliver behandlet er uden for min rækkevidde.

Det som jeg vil er at sende præcis de samme oplysninger som de knapper der allerede findes i forvejen, men med en Javascript-løsning der giver mulighed for tekst-knapper.



Avatar billede nikolajdu Nybegynder
09. januar 2002 - 13:27 #8
For at kunne komme med flere brilliante forslag er jeg nødt til at vide hvordan de tjekker hvilket \"name\" der kommer med over - Jeg er helt blank her :))
Avatar billede berglund Nybegynder
09. januar 2002 - 13:57 #9
Præcis hvordan det foregår ved jeg ikke, men normalt er de jo overført i en form der i formatet
\"name=value\". Altså

<... name=foo value=bar\"> bliver til

http://......dk/default.asp?foo=bar&foo2=bar2&...

Men det tænker jeg at du ved. Når webcrossing parcer strengen, kigger de efter om foo findes. Value er ligegyldig i denne sammenhæng. Grunden til at jeg tror at value ikke har nogen betydning er, at systemet er lavet således at man kan oversætte html-koden til eks. dansk. Og hvis det skal kunne lade sig gøre kan \"value\" ikke have nogen betydning, for så ville man ikke kunne oversætte knapperne!

Skal jeg kæde det sammen med mit spørgsmål skulle eksemplet blive til:
http://......dk/default.asp?edit=edit
hvis man har trykket på edit-knappen, men
http://......dk/default.asp?ok=ok
hvis man har trykke på ok-knappen.

Pointen er, for mig at se, er at det er ligegyldigt hvordan scriptet tjekker hvad, og hvad der sker. Jeg skal bare sende den samme \"besked\" afsted som hvis jeg havde brugt to submit-knapper med hvert sin name-attribut. og hvordan gøres det??

(Jeg er begyndt at tro at det er umuligt... desværre. Men så må jeg jo lave nogle pæne knapper :^)
Avatar billede nikolajdu Nybegynder
09. januar 2002 - 14:04 #10
Det eneste jeg sårn umiddelbart lige kan foreslå er at udskifte hele formen.

altså noget i stil med:

<script>

function skiftDu(hvad){

if (hvad==\"ok\"){
document.getElementById(\'f\').innerHTML=\"<input type=\\\"skiftNavnDu\\\" value=\\\"ok\\\"><a href=\\\"java script:skiftDu(\'ok\')\\\">ok</a><a href=\\\"java script:skiftDu(\'edit\')\\\">edit</a>\";
}else{
document.getElementById(\'f\').innerHTML=\"<input type=\\\"skiftNavnDu\\\" value=\\\"edit\\\"><a href=\\\"java script:skiftDu(\'ok\')\\\">ok</a><a href=\\\"java script:skiftDu(\'edit\')\\\">edit</a>\";
}
}
</script>

<form name=\"f\" action=\"siden.html\" method=\"GET\">
<input type=\"skiftNavnDu\" value=\"navn1\">
<a href=\"java script:skiftDu(\'ok\')\">ok</a>
<a href=\"java script:skiftDu(\'edit\')\">edit</a>
</form>

Absolut uprøvet og virker kun i Netscape 6 / Opera 5 / IE 5.0 og frem.

/Nikolaj
Avatar billede nikolajdu Nybegynder
09. januar 2002 - 14:08 #11
Nåja glemte lige at sætte de rigtige values ind først.
Avatar billede berglund Nybegynder
09. januar 2002 - 14:15 #12
Jeg er ikke sikker på at jeg er helt med (det er lidt for avanceret til at jeg helt kan gennemskue det).

Begge muligheder (edit og ok) skal jo være tilstede hele tiden. Det er stadig \"value\"-værdier som du ændrer på, ikke sandt? Det skal være name-værdier.
Avatar billede nikolajdu Nybegynder
09. januar 2002 - 14:20 #13
Jo her var det value, men det kan du jo bare copy/paste til name også :))
Avatar billede nikolajdu Nybegynder
09. januar 2002 - 14:34 #14
Du kan se et eks her:

<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">

<html>
<head>
    <title>Untitled</title>
   
    <script>

function skiftDu(hvad){

temp = new Array();

for (i=0;i<document.f.elements.length;i++){
temp[i] = document.f.elements[i].value
}

document.getElementById(\'f\').innerHTML=\'<input type=\"masserAfTekst\" value=\"\'+temp[0]+\'\">tekst<br><input type=\"mereTekst\" value=\"\'+temp[1]+\'\">mere tekst<br><br><input type=\"input\" name=\"\'+hvad+\'\" value=\"\'+hvad+\'\">Navnet skifter her<br><br><a href=\"java script:skiftDu(\\\'ok\\\')\">ok</a>&nbsp;&nbsp;<a href=\"java script:skiftDu(\\\'edit\\\')\">edit</a>\';
}
</script>

</head>

<body>

<form name=\"f\" action=\"siden.html\" method=\"GET\">
<input type=\"masserAfTekst\" value=\"testTekst\">tekst<br>
<input type=\"mereTekst\" value=\"tekst2\">mere tekst<br><br>
<input type=\"skiftNavnDu\" value=\"navn1\"> Navnet skifter her:<br>
<a href=\"java script:skiftDu(\'ok\')\">ok</a>&nbsp;&nbsp;<a href=\"java script:skiftDu(\'edit\')\">edit</a>
</form>

</body>
</html>
Avatar billede nikolajdu Nybegynder
09. januar 2002 - 14:43 #15
Når du klikker og kigger i kildekoden kan du IKKE se nogen ændringer, men tro nu bare på mig - Den sender felter med de rigtige navne afsted.

/Nikolaj
Avatar billede berglund Nybegynder
09. januar 2002 - 15:45 #16
Ok. Jeg tror dig. Jeg bliver desværre nødt til at tjekke det en anden dag. Tak for hjælpen nikolajdu. Du har arbejdet hårdt.

Avatar billede nikolajdu Nybegynder
09. januar 2002 - 15:46 #17
Det var så lidt du må bare sige til hvis der er problemer :))
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