webForumDet fria alternativet

skicka värde från popupfönster

JavaScript

16 svar · 460 visningar · startad av devotion

Medlem sedan jan. 20013 582 inlägg
Frågan#1

Hej!

Har ett popupfönster som där man kan välja uppdragsnummer från en listmeny.

Hur gör jag för att när jag markerat ett nummer och därefter klickar på submit, skicka värdet tillbaka till en textruta i den sidan som länken till popupfönstret finns? Jag vill även att popupfönstret skall stängas vid submit.

Mvh
Henrik

Medlem sedan dec. 19996 721 inlägg
#2

Du kommer åt det öppnande fönstret med

window.opener

t.ex

<input type="button" value="Tjohej!" onclick="window.opener.document.frmLalala.uppdrag.value=this.form.uppdrag.options[this.form.uppdrag.selectedIndex].value;window.close();">

Men gör gärna det hela i en funktion, så blir det snyggare.

Medlem sedan jan. 20013 582 inlägg
#3

hmmm.. hur får man tilld et tilll enfunktion då... är kass på javascript...

//Henrik

Medlem sedan dec. 20003 887 inlägg
#4

Jag tror det ska se ut såhär...

function makeChoice( oInput )
{
  window.opener.document.frmLalala.uppdrag.value = oInput.form.uppdrag.options[ oInput.form.uppdrag.selectedIndex ].value;
  window.close();
}

<input type="button" value="Tjohej!" onclick="makeChoice( this );">
Medlem sedan jan. 20013 582 inlägg
#5

tack!
Ska testa!

/Henrik

Medlem sedan jan. 20013 582 inlägg
#6

Hmmm, får inte till det... Eftersom jag inte är så bra på javascript så skulla jag bli glad om någ "förklarade" koden så jag kan skriva i rätt värden..

Formuläret som är på ursprungssidan heter "searchTask" fältet taskNr
formuläret på popupen heter: chooseTaskForm listmenyn: taskList

Mvh
Henrik

Medlem sedan dec. 20025 483 inlägg
#7

Skall det inte vara "taskList"?

function makeChoice( oForm )
{
  window.opener.document.forms["searchTask"].elements["taskNr"].value = oForm.elements["taskList"].options[ oForm.elements["taskList"].selectedIndex ].value;
  window.close();
}

<form name="chooseTaskForm">
    ...
    <input type="button" value="Tjohej!" onclick="makeChoice( this.form );">
</form>
Medlem sedan jan. 20013 582 inlägg
#8

Hej!
Har testat ditt förslag Peter S men det fungerar inte.. det händer inget och jag får inget felmeddelande....

Mvh
Henrik

Medlem sedan dec. 19996 721 inlägg
#9
function makeChoice( oInput )
{
  //oInput är knappen som man klickade på
  //window.opener är det öppnande fönstret

  //Bäst att kolla om det finns ett öppnande fönster och om det är det rätta
  if (window.opener && window.opener.document.searchTask && window.opener.document.searchTask.taskNr)
  {
		//oInput.form är forumläret i popup:en
		window.opener.document.searchTask.taskNr.value = oInput.form.tasklList.options[oInput.form.tasklList.selectedIndex].value;
		window.close();
  }
  
}
Medlem sedan dec. 20025 483 inlägg
#10

devotion skrev:

Hej!
Har testat ditt förslag Peter S men det fungerar inte.. det händer inget och jag får inget felmeddelande....

Mvh
Henrik

Då får du kolla dina namn så att de stämmer. Såg du min fråga förresten? Sedan är det ju aldrig fel att vara noga med objektdetektering (se emissions inlägg).

Medlem sedan jan. 20013 582 inlägg
#11

Peter S skrev:

Då får du kolla dina namn så att de stämmer. Såg du min fråga förresten? Sedan är det ju aldrig fel att vara noga med objektdetektering (se emissions inlägg).

Jepp jag såg den... Jag hade bara skrivit slarvigt här på forumet... Har redigerat det nu...

Men, antinge är jag helt bäng eller kan jag inte förklara vad jag menar.. Det funkar fortfarande inte.. det händer inget..

På sidan som "anropar" popupfönstret så finns det en länk:

<a href="#" onclick="window.open('chooseTask.asp', 'Detaljer', 'width=500, height=450'); return false;">klicka</a>

sidan som anropar popup-fönstret har ett formulär som heter:searchTask och ett textfält som heter: taskNr (vdet är till detta fält jag vill få tillbaka värdet från det valda upppdragsnumret i listmenyn i popup-fönstret.)

popup-fönstret har ett formulär som heter: chooseTaskForm och en listmeny som heter: taskList

Knappen i detta formulär heter: choose

    <input name="choose" type="button" id="choose" onclick="makeChoice( oInput );" value="Välj!">

Det händer ingenting när jag trycker på knappen choose

Mvh
Henrik

Medlem sedan dec. 20025 483 inlägg
#12

Med emissions kod:

<input name="choose" type="button" id="choose" onclick="makeChoice( [b]this[/b] );" value="Välj!">
Medlem sedan jan. 20013 582 inlägg
#13

näe...

nu får ni hela koden....

analyzeTask.asp (ursprungssidan)

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
</head>

<body>
  <form action="analyzeTask.asp" method="post" name="searchTask" id="searchTask">
	<table width="800" border="0" cellspacing="0" cellpadding="0">
	  <tr>
		<td width="191">Uppdragsnummer:</td>
		<td width="157"><input name="taskNr" type="text" id="taskNr" value="<% =request.Form("taskNr") %>"></td> 
		<td width="74"><a href="#" onclick="window.open('chooseTask.asp', 'Detaljer', 'width=500, height=450'); return false;">klicka</a></td>
		<td width="100">Mont&ouml;r:</td>
		<td width="278"><select name="user" id="user">
        </select></td>
	  </tr>
	  <tr>
		<td>Fr&aring;n och med: </td>
		<td><input name="startDate" type="text" id="startDate" value="<% =request.Form("startDate") %>"></td>
		<td><img src="../Images/tableDate.gif" width="19" height="14"></td>
		<td>Arbetstid:</td>
		<td><input name="workTime" type="checkbox" id="workTime" value="checkbox"></td>
	  </tr>
	  <tr>
		<td>Till och med: </td>
		<td><input name="stopDate" type="text" id="stopDate" value="<% =request.Form("stopDate") %>"></td>
		<td><img src="../Images/tableDate.gif" width="19" height="14"></td>
		<td>&Ouml;vertid:</td>
		<td><input name="overTime" type="checkbox" id="overTime" value="checkbox"></td>
	  </tr>
	  <tr>
	    <td>&nbsp;</td>
	    <td>&nbsp;</td>
	    <td>&nbsp;</td>
	    <td>Visa detaljer: </td>
	    <td><input name="timeDetails" type="checkbox" id="timeDetails" value="checkbox"></td>
      </tr>
	  <tr>
	    <td><input type="submit" name="Submit" value="Submit"></td>
	    <td>&nbsp;</td>
	    <td>&nbsp;</td>
	    <td>&nbsp;</td>
	    <td>&nbsp;</td>
      </tr>
	</table>
  </form>	
<%
If request.Form("taskNr") <> "" Then

	Dim objRS, objConn, strSQL, dtStartDate, dtStopDate, strTaskNr, strWorkTime, strOverTime, strDetails, strUser
	
	strTaskNr = request.Form("taskNr")
	dtStartDate = request.Form("startDate")
	dtStopDate = request.Form("stopDate")
	
	Set objConn = Server.CreateObject("ADODB.Connection")
	objConn.ConnectionString = "DSN=uppdragNu"
	objConn.Open 

	strSQL = "SELECT iif (SUM(Time) IS NULL, 0, SUM(Time)) As totalTime " &_
			 "FROM tblTask " &_
			 "INNER JOIN tblTime ON tblTask.Id = tblTime.TaskId " &_
			 "WHERE tblTask.TaskNr = '" & strTaskNr & "' AND tblTime.startDate > #" & dtStartDate & "# AND tblTime.StopDate < #" & dtStopDate & " 23:59:59# "
			 
	Set objRS = Server.CreateObject("ADODB.Recordset")
	objRS.Open strSQL, objConn, 3, 1
	
		If objRS.EOF then 
			response.write "Det fanns inga uppdrag!"
		Else
			do until objRS.EOF
			Response.write objRS("totalTime")
			objRS.Movenext
			Loop
		End If
	
	objRS.Close
	Set objRS = Nothing
	objConn.Close
	Set objConn = Nothing
	
	
End If
%>  
</body>
</html>

och chooseTask.asp (popup-fönstret)

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Välj uppdrag</title>

<script language="Javascript">
function makeChoice( oInput )
{
  //oInput är knappen som man klickade på
  //window.opener är det öppnande fönstret

  //Bäst att kolla om det finns ett öppnande fönster och om det är det rätta
  if (window.opener && window.opener.document.searchTask && window.opener.document.searchTask.taskNr)
  {
		//oInput.form är forumläret i popup:en
		window.opener.document.searchTask.taskNr.value = oInput.form.tasklList.options[oInput.form.tasklList.selectedIndex].value;
		window.close();
  }
  
}</script>

</head>

<body>
<%
Dim objRS, objConn, strSQL

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.ConnectionString = "DSN=uppdragNu"
objConn.Open 

strSQL = "SELECT  * " &_
		 "FROM tblTask " &_
		 "ORDER BY taskNr "
		 
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, objConn, 3, 1
%>

<form name="chooseTaskForm" method="post" action="">
  <p>
  <select name="TaskList" size="10" id="TaskList">
      <% Do until ObjRS.EOF %>
      <option value="<% =objRS("TaskNr")%>">
      <% =objRS("TaskNr") & " " & objRS("customerName") & " "%>
      <%If Len(objRS("task")) > 30 then
	Response.Write left(objRS("task"),27) & "..."
Else
	Response.write objRS("task")
End If%> 
      </option>
      <% objRS.Movenext %>
      <% Loop %>
  </select>
  
<%
objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
%>
</p>
  <p>
    <input name="choose" type="button" id="choose" onclick="makeChoice( this );" value="Välj!">
</p>
</form>
</body>
</html>

Börjar bli sinnessjuk....... x(

Troligen har jag gjort nått totalfel..

Mvh
Henrik

Medlem sedan dec. 20025 483 inlägg
#14

Om vi pratar om popupfönstrets kod. I JS-koden refererar du till ett element "tasklList" (felstavat ;) ), när elementet i själva verket heter "TaskList" (med inledande versal). Eftersom JavaScript är skiftlägeskänsligt måste strängarna vara lika. Så om elementet får fortsätta heta "TaskList":

oInput.form.TaskList.options[oInput.form.TaskList.selectedIndex].value
Medlem sedan jan. 20013 582 inlägg
#15

ja vad ska man säga..... Pinsamt.... Du hade rätt Peter S! Jag hade stavat som en kratta! Tack emission oxå... din kod hade funkat om jag stavat rätt...

Tack båda för ert tålamod...

Så efter kontroll av stavning och versaler så funkar din kod utmärkt emission...

Mvh
Henrik

Medlem sedan dec. 20025 483 inlägg
#16

Det är sådant som händer. Glöm inte att acceptera emissions svar som slutgiltigt (om valet föll på det vill säga).

Medlem sedan jan. 20013 582 inlägg
#17

:)
Done!

Mvh
Henrik

267 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)