Javascript Problem bei Dropdownmenü

AppleSeed

Mitglied
Hallo,

ich hab da ein Problem mit einem Javascript und Dropdownmenüs.

Ich habe drei Dropdownmenüs (Kunde, Projekt, Teilprojekt) die werde in den Menüs kommen aus einer Datenbank.
Wenn ich Kunde auswähle wird der Value Wert mit onchange an die URL übergeben und damit werden dann die Projekt aus der Datenbank ausgelesen.
Das selbe passiert dann bei Teilprojekt wo bei von Projekt abhängig ist.
Das Funktioniert auch alles soweit.
Nur wenn ich jetzt ein Projekt ausgewählt habe und ich den Kunden ändern will wird nicht der Wert des Kunden.Value übergeben sonder nur der wert von Projekt und dadurch wird die URL an ungültig.
Dann sieht die URL wie folgt aus (http://www.domain.de/Projektname)
und so müsste sie eingentlich aussehen (http://www.domain.de/seite.asp?kunde=kunde)

Hier der Javascript code.
Javascript:
function surfto(MyForm) 
{

	var myindex=document.MyForm.Kunde.selectedIndex
	if (document.MyForm.Kunde.options[myindex].value != "")
	{
		location=document.MyForm.Kunde.options[myindex].value;
	}

	var myindex=document.MyForm.Projekt.selectedIndex
	if (document.MyForm.Projekt.options[myindex].value != "")
	{
		location=document.MyForm.Projekt.options[myindex].value;
	}

	var myindex=document.MyForm.Teilprojekt.selectedIndex
	if (document.MyForm.Teilprojekt.options[myindex].value != "")
	{
		location=document.MyForm.Teilprojekt.options[myindex].value;
	}
}

Hier der ASP Teil
Code:
Response.Write "<select name=Kunde id=Kunde onChange=surfto(this.form)>"
				Response.Write "<option></option>"
			objRs.MoveFirst
			Do While Not objRs.EOF
					Response.Write "<option value=neue_taetigkeit_auftrag.asp?name=" & Request.QueryString("name") & "&Kunde=" & objRs("Matchcode") & ">"  & objRs("Matchcode")  & "</option>"
			objRs.MoveNext
			Loop
				Response.Write "</select></td>"

Response.Write "<select name=Projekt id=Projekt onChange=surfto(this.form)>" & _
				"<option>" & Request.QueryString("Projekt") & " </option>" & _
				"<option></option>"
			objRs.MoveFirst
			Do While Not objRs.EOF
				Response.Write "<option value=neue_taetigkeit_auftrag.asp?name=" & Request.QueryString("name") & "&Kunde=" & Request.QueryString("Kunde") & "&Projekt=" & objRs("Pname") & ">"  & objRs("Pname")  & "</option>"
			objRs.MoveNext
			Loop
				Response.Write "</select></td>"


Ich hoffe ihr könnt mir bei meinem Problem helfen.
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

mit ASP generierst du HTML-Code. Könntest du diesen zur Lösung deines Problems auch posten?, damit man sehen kann was im value-Attribute deiner Option-Tags steht.
Ich glaube das Problem ist, dass du die URL änderst ohne das vorherige Aufsammeln von Parametern.


Hier mal ein Beispiel mit jQuery. Wobei ich den Request lieber über jQuery machen würde (http://api.jquery.com/jQuery.get/).

Javascript:
<html>
<head>
<title> de.tutorials.js.collectParameters</title>
<meta name="author" content="konstantin.denerz"></meta>

<script src="jquery-1.4.2.js" type="text/javascript">

</script>
<script type="text/javascript">

$(document).ready(function(){
	var path = 'index.html';
	var parameterTemplate = '?customer={customer}&project={project}';
	
	/**
		Changes location and updates parameters in url.
	*/
	function updateSite(parameters) {
		var params = parameterTemplate;
		
		for(parameter in parameters){
			params = params.replace("{" + parameter+"}", parameters[parameter]);
		}
		
		location = path + params;
	
	}
	
	/**
	Collects parameters and updates site.
	*/
	$('select').change(function(eventObject){
		var parameters = {};
		// iterate over selection tags
		$("#config select").each(function(index,select){
			var key = $(select).attr("id");
			var value = select[select.selectedIndex].value;
			parameters[key] = value;
		});
		
		updateSite(parameters);
		
	});
});
</script>
</head>
<body>
<form id="config">
<select id="customer">
<option>A</option>
<option>B</option>
<option>C</option>
</select>
<select id="project">
<option>P1</option>
<option>P2</option>
<option>P3</option>
</select>
</form>
</body>
</html>

Gruß Konstantin
 
Zuletzt bearbeitet von einem Moderator:
Danke für deine Antwort.

Ich habe das Problem jetzt ein wenig anders gelöst.

Hab für jeder DropDown ein eigenes Form genomen. Es funktionirt so weit so gut und das ich jetzt mal auf ASP.Net umsteigen will reicht es mir erst mal so.

Danke moch mals
 
Zurück