Just nu i M3-nätverket
Jump to content

Länk istället för formulär....


MagnusM.

Recommended Posts

Är det ingen som vet hur man fixar följande i ett omröstningsscript?:

 

Nu röstar man genom att klicka i en knapp

( <input type="radio" value="<%=nCount%>" <%If nDef = False Then %>checked<%End If%> name="R1"> ), och

sedan klicka på Submit. Men jag vill att man ska klicka direkt på svarsalternativet ( <%=vAnswers(nCount)%> ) för att rösta.

 

Hur fixar jag det?

Link to comment
Share on other sites

titta lite på händelsehantaringen i Javascript, t.ex. onfocus, onblur m.m.

<form name="test" action="spara.asp" method="post">
<input type="radio" name="teset" onclick="document.test.submit();">
</form>

 

Är inte 100 på javascript syntaxen till submit, men något snarlikt kanske :)

 

Don't Underestimate The Power Of Esuk ...

 

Link to comment
Share on other sites

Det ska vara en vanlig länk: KLICKA HÄR och inte en knapp som man fyller i: FYLL I HÄR OCH KLICKA PÅ "SKICKA".

 

Finns det inget sätt att fixa det på?

 

 

 

 

Link to comment
Share on other sites

Kristianstad

Då är det följande kod du skall skriva:

<form name="test" action="spara.asp" method="post">
<a href="javascript:document.test.submit();">Skicka</a>
</form>

/ Kristoffer

 

[inlägget ändrat 2002-04-21 15:41:14 av Kristianstad]

Link to comment
Share on other sites

Ehhhhhhhh...

 

Ersatte <input type="radio" value="<%=nCount%>" <%If nDef = False Then %>checked<%End If%> name="R1"> med <a href="javascript:document.test.submit();"><%=vAnswers(nCount)%></a> och det gick inte alls...

 

Det hände ingenting och stod "Fel på sidan" längst ned i webbläsaren.

 

Några fler förslag??

 

 

 

Link to comment
Share on other sites

Om du vill att bara genom att klicka på länken skall man rösta skall du skriva så här i länken:

 

<input type=radio onclick=Rosta(1)>

Där 1 står för det värde som länken skall ha!

 

Sen skall du ha ett javascript som heter Rosta(val) mellan scripttaggar, typ

 

<Script language="javascript1.2">

 

function Rosta(val){

this.document.formulärnamn.objektnamn.value=val;

this.document.formulärnamn.submit();

}

 

</script>

 

Är inte helt säker på syntaxen, men nåt sånt här..

 

 

Link to comment
Share on other sites

Inte i närheten av en lösning.Jag skall INTE ha någon j*vla RADIOKNAPP. Bara en simpel länk som man ska klicka på, och då ska man komma till en annan sida som räknar rösterna.

 

Här är hela sidan:

 

<%

OPTION EXPLICIT

Response.Buffer = True

%>

 

<!--#include file="incpollmentor.asp"-->

<%

'Some before doings...

'Lets get the current poll...

Dim sTitle

Dim sQuestion

Dim vAnswers(8)

Dim vCount(8), sID

Dim vPercent(8)

 

sID = Request.QueryString("id")

If sID = "" Then

sID = -1

End If

 

Dim sError

 

'Are we trying to vote?

If Request.Form("R1") <> "" Then

'First try to vote...

sError = PollMentor_TryToVote(sID,Request.Form("R1") )

End If

 

'Get active one...

Dim nRet

nRet = PollMentor_GetPollInfo( sID, sTitle, sQuestion, vAnswers, vCount )

%>

<html>

 

<head>

<meta http-equiv="Content-Language" content="sv">

<meta name="GENERATOR" content="Microsoft FrontPage 5.0">

<meta name="ProgId" content="FrontPage.Editor.Document">

<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">

<title>Titel</title>

</head>

 

<body>

<form method="POST" action="pollmentorres.asp">

 

<%

Dim nDef

%>

 

<%

Dim nCount, nMaxValue, nLowValue

'First of all get max value and nLowValue

nMaxValue = 0

For nCount=1 To 8

If vAnswers(nCount)<>"" And vCount(nCount)>nMaxValue Then

nMaxValue = vCount(nCount)

End If

Next

 

If nMaxValue = 0 Then

nMaxValue = 1

End If

 

Dim nMaxWidth

nMaxWidth = 100 'This is number of pixels for maxvalue

Dim nThisVal, nTotal, nPercent

nTotal = 0

 

'1. Go through all and get total

For nCount=1 To 8

If vAnswers(nCount)<>"" Then

nTotal = nTotal + vCount(nCount)

End If

Next

 

If nTotal = 0 Then

nTotal = 1

End If

 

'2. Go through all and get percent

For nCount=1 To 8

If vAnswers(nCount)<>"" Then

vPercent(nCount) = FormatNumber(vCount(nCount)/nTotal*100,1)

End If

Next

 

For nCount=1 To 8

If vAnswers(nCount)<>"" Then

nThisVal = FormatNumber(vCount(nCount)/nMaxValue * nMaxWidth,0)

%>

 

<input type="radio" value="<%=nCount%>" <%If nDef = False Then %>checked<%End If%> name="R1"><%=vAnswers(nCount)%>

<img src="bar.gif" width="<%=nThisVal%>" height="10"> (<%=vPercent(nCount)%> %)

 

<%

End If

Next

%>

 

<input type="submit" value="Vote!" name="B1">

 

------------------------------------

 

Ingen som vet hur man gör så att man röstar genom att klicka på en vanlig länk istället för att fylla i knappen och sedan klicka på "Vote!" ???????

 

 

 

 

 

[inlägget ändrat 2002-04-22 16:52:00 av MagnusM.]

Link to comment
Share on other sites

 

*suckar*

Jaja, ursäkta om man skrev lite tokigt..

Du använder exakt samma syntax med onclick för en länk, som du gör för en radioknapp.... Skriv istället:

 

<a href="sida2.asp" onclick=Rosta(val)>länk</a>

 

med tillhörande javascript vad du nu vill göra i scriptet! Ta hand om värdena på den nya sidan genom Request.form("objektnamn").

 

Du använder dig alltså av dolda fält, så du måste på sida1 ha

<FORM NAME="formulärnamn">

<INPUT NAME="objektnamn" TYPE="hidden" VALUE="">

</FORM>

 

Sen gör du submit på det formuläret genom ditt javascript som du anropar i din länk och tar hand om värdena på den nya sidan.

 

Det finns säkert massor av andra sätt som kanske passar dig bättre, men detta är ett sätt att lösa det på.

 

/J

 

[inlägget ändrat 2002-04-22 17:00:12 av Jenny Redenheim]

Link to comment
Share on other sites

Inte i närheten av en lösning.Jag skall INTE ha någon j*vla RADIOKNAPP.

Lite trist attityd mot dem som försöker hjälpa dig... Tror du att detta är någon form av betalsupport där man skäller ut dem som hjälper till när de gör en liten miss?

 

Tur för dig att Jenny var så snäll och fixade koden åt dig...

 

/Stefan

___________________________________________________________

To me, boxing is like a ballet, except there's no music, no choreography and the dancers hit each other.

 

Link to comment
Share on other sites

Försökte med <a href="pollmentorres.asp" onclick=Rosta(<%=nCount%>)><%=vAnswers(nCount)%></a>. Nu kommer man visserligen till filen som tar hand om rösterna, men den räknar inte någon röst.

 

Jenny, kan du förklara lite närmare vad du menar med "objektnamn"? Jag är inte så insatt i det här.

 

PS. Stefan, det öppna forumet är nog mer lämpligt för dig än det här, där syftet just är att få hjälp av andra med just ASP- och VBscript. Om du ändå ger dig in på att besvara ett inlägg så vore det önskvärt om du höll dig till ämnet. Tack på förhand!

 

[inlägget ändrat 2002-04-22 23:05:24 av MagnusM.]

Link to comment
Share on other sites

Hmm..

 

Ett formulär består av flera objekt. Ett objekt är t ex ett input fält av något slag (text, hidden, radio, checkbox...) För att kunna tala om vilket fälts information som du vill ha, så måste du kunna adressera ("peka ut") det objektet. Adressen är objektets namn (NAME="objektnamn") ihop med formulärnamnet.

 

Vad jag kan se på din kod så är det samma sida som du vill submitta igen, du måste först ge ditt formulär ett namn, tex "POLL".

 

<FORM NAME="POLL" METHOD="POST" ACTION="POLLMENTORRES.ASP"> </FORM>

 

Mellan taggarna skapar du sen det dolda OBJEKT du skall tilldela röstvärdet:

<INPUT TYPE="hidden" NAME="Vote" VALUE="<%=nCount%>">

 

För att kunna använda objektets värde måste du lägga objektet så att det har laddats in innan du ska använda det första gången i Asp-koden.

 

Ditt lilla javascript skulle se ut ungefär som följer:

<SCRIPT language="javascript1.2">

Function Vote(val){

document.poll.vote.value=val;

document.poll.submit();

}

</SCRIPT>

 

Länken:

<A HREF="" ONCLICK=Vote(detvalsommanröstarpå)>länktext</A>

 

Högst upp i din sida måste du skriva in

nCount=Request.form("Vote").

alltså:

Request

Form-start

Objekt

Din aspkod med länk

Form-slut

 

Jag brukar använda mig av numeriska värden då jag skickar runt informationen så här, har svårt att få det att fungera med strängar.

 

Hoppas du fått mer klarhet i vad som händer, och att jag inte gjort för mycket fel ;)

 

//Jenny

 

 

[inlägget ändrat 2002-04-23 15:43:16 av Jenny Redenheim]

Link to comment
Share on other sites

Testade med <A HREF="pollmentorres.asp" ONCLICK=Vote(<%=nCount%>)><%=vAnswers(nCount)%></A>...men informationen kommer fortfarande inte över till "pollmentorres.asp" och registreras inte.

 

Jag gjorde som du sa och lade in <% nCount=Request.form("Vote") %> efter

 

<%

OPTION EXPLICIT

Response.Buffer = True

%>

 

....och sedan:

 

<FORM NAME="POLL" METHOD="POST" ACTION="pollmentorres.asp">

<INPUT TYPE="hidden" NAME="Vote" VALUE="<%=nCount%>">

<SCRIPT language="javascript1.2">

Function Vote(val){

document.poll.vote.value=val;

document.poll.submit();

}

</SCRIPT>

<table border="0" cellpadding="3" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%">

<tr>

<td width="50%"><table border="0" cellPadding="0" cellSpacing="0" width="100%">

<tr>

<td bgColor="#8ca5b5">

<table border="0" cellPadding="2" cellSpacing="1" width="100%">

<tbody>

<tr>

<td bgColor="#dbeaf5" vAlign="top" class="rubrikerutanlank" colspan="2">

:: <%=sQuestion%></td>

<td bgColor="#dbeaf5" vAlign="top" class="rubrikerutanlank">&nbsp;</td>

</tr>

<%

Dim nDef

%>

 

<%

Dim nCount, nMaxValue, nLowValue

'First of all get max value and nLowValue

nMaxValue = 0

For nCount=1 To 8

If vAnswers(nCount)<>"" And vCount(nCount)>nMaxValue Then

nMaxValue = vCount(nCount)

End If

Next

 

If nMaxValue = 0 Then

nMaxValue = 1

End If

 

Dim nMaxWidth

nMaxWidth = 100 'This is number of pixels for maxvalue

Dim nThisVal, nTotal, nPercent

nTotal = 0

 

'1. Go through all and get total

For nCount=1 To 8

If vAnswers(nCount)<>"" Then

nTotal = nTotal + vCount(nCount)

End If

Next

 

If nTotal = 0 Then

nTotal = 1

End If

 

'2. Go through all and get percent

For nCount=1 To 8

If vAnswers(nCount)<>"" Then

vPercent(nCount) = FormatNumber(vCount(nCount)/nTotal*100,1)

End If

Next

 

For nCount=1 To 8

If vAnswers(nCount)<>"" Then

nThisVal = FormatNumber(vCount(nCount)/nMaxValue * nMaxWidth,0)

%>

 

<tr>

<td class="verdana9pxbold" bgcolor="#EFF7FF">

<img border="0" src="../vm2002/images/flaggor/argentina.gif" width="15" height="10"><b>

<A HREF="pollmentorres.asp" ONCLICK=Vote(<%=nCount%>)><%=vAnswers(nCount)%></A></b></td>

<td class="verdana9pxbold" bgcolor="#EFF7FF">

<img src="bar.gif" width="<%=nThisVal%>" height="10"> (<%=vPercent(nCount)%> %)</td>

<td align="center" bgcolor="#eff7ff" class="verdana10px"><%=vCount(nCount)%> <% If vCount(nCount) = 1 Then %> röst<% Else %> röster<% End If %></td>

</tr>

 

<%

End If

Next

%>

 

------------------------------------

 

Problemet är som sagt att värdena aldrig kommer över till "pollmentorres.asp", som de gör när man markerar knappen <input type="radio" value="<%=nCount%>" <%If nDef = False Then %>checked<%End If%> name="R1"> och sedan trycker på Submit-knappen.

 

Är det möjligtvis något annat än <%=nCount%> som ska stå istället för "detvalsommanröstarpå" i <A HREF="" ONCLICK=Vote(detvalsommanröstarpå)>länktext</A>.. och var ska länken leda?

 

 

 

 

 

 

Link to comment
Share on other sites

Vad står nCount för hos dig?

Vad står nThisVal för?

 

Vad jag förstått så har du dynamiska värden som man röstar på?

 

Ok: dags att debugga..

Prova att i första raden i javascriptet lägga till en rad som skapar en alertbox så att du ser att du får kontakt med ditt script.

syntax:

Alert("I funktionen med val "+val);

 

Då du klickar på länken skall rutan visas och sen resten av javascriptet köras då du Ok:at den.

 

Sen efter din nVote=Request.form("vote")

så skriver du ut värdet, dvs med en response.write(nVote)

 

Se om du får med dig något alls i de funktionerna.

 

Anledningen till att jag lämnade länken tom var för att min tanke var att eftersom formläret "poll" ändå ska aktivera samma sida så behöver inte länken ladda den och sen även scriptet.. Du kanske måste ha med det ändå, du får prova dig fram.

 

Det kan vara besvärligt att få med sig ASP-värden i javascriptanrop, varför jag hellre skulle rekommenderat fasta värden. Prova gärna med det och se om det följer med. (dvs, skriv Vote(1) och se om val i javascriptet blir 1.)

 

Och - för tydlighetens skull - kom ihåg att jag förutsätter att du submittar SAMMA SIDA! Har du flera sidor skall request.form-koden såklart finnas på den sida som du anropar!

 

/J

 

 

 

 

 

 

Link to comment
Share on other sites

Följande script fungerar inte alls:

 

<SCRIPT language="javascript1.2">

{

Alert("I funktionen med val "+val);

Function Vote(val){

document.poll.vote.value=val;

document.poll.submit();

}

</SCRIPT>

 

..det står t.o.m. "Fel på sidan!" längst ned i MSIE. För övrigt så är det inte samma sida som tar emot värdens som de ska skickas ifrån. Jag arbetar alltså inte med koden i "pollmentorres.asp".

 

Jag vet inte om det är fasta värden eller inte. Har laddat ned hela scriptet från nätet. Här kan du logga in med ditt förnamn för att se alla filerna: http://www.fotbollsvm2002.com/pollmentor/autoedit.asp

 

Filen som man röstar från är "pollmentor.asp".

 

 

[inlägget ändrat 2002-04-23 18:59:23 av MagnusM.]

Link to comment
Share on other sites

 

Att funktionen inte fungerar med sin alertbox som du skrivit den är jag helt på det klara med... du måste lägga alertboxen i FUNKTIONEN, inte bara innanför scripttaggarna....

 

<SCRIPT language="javascript1.2">

Function Vote(val){

Alert("I funktionen med val "+val);

document.poll.vote.value=val;

document.poll.submit();

}

</SCRIPT>

 

Jag ska kika vidare på sidorna på den länk du gav mig, dock inte just nu.

 

/J

 

 

 

 

 

Link to comment
Share on other sites

Du, det har redan löst sig! Men du ska ha tack för allt ändå..Kanske återkommer i framtiden..

 

/Magnus

 

 

 

[inlägget ändrat 2002-04-24 17:05:15 av MagnusM.]

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...