webForumDet fria alternativet

Skicka olika beroende på valt land

JavaScript

4 svar · 322 visningar · startad av kbking

Medlem sedan mars 2003168 inlägg
Frågan#1

Hej!

Jag har ett formulär med ett antal textfält och en dropdown meny, som har valen Sverige,
Norge, Danmark, Finland, Åland och Island. Med koden nertill skickas det iväg:

<form action="http://domain.com/cgi-bin/blankett-sv.cgi" method="post" name="blankett" id="blankett" onsubmit="return CheckForm(this)" >

Alltså används blankett-sv.cgi för alla länderna. Det jag undrar är
om det går att styra så att blankett-no.cgi används för Norge,
blankett-dk.cgi för Danmark osv

Medlem sedan aug. 20039 340 inlägg
#2
 
<script>
//document.oncontextmenu=function(){return false;};
function CheckForm(th){
/* Din kod... */
th.action = "http://domain.com/cgi-bin/blankett-" + th.elements["land"].value + ".cgi";
}
</script>
<form action="http://domain.com/cgi-bin/blankett-sv.cgi" onsubmit="return CheckForm(this)">
<input type="submit">
<select name="land">
<option value="sv">Sverige</option>
<option value="no">Norge</option>
<option value="fi">Finland</option>
<!-- osv -->
</select>
</form>
Medlem sedan mars 2003168 inlägg
#3

Jag får inte rätt på det. Det är blankett-sv.cgi som skickas hela tiden. Jag postar därför de tre delar kod som jag använder
och som jag vill ha in denna finess i.

Om något fält inte fylls i eller lämnas ofullständigt ifyllt kommer det upp en alert härifrån:

<script language="JavaScript" type="text/javascript">
<!--
function CheckForm( theform )
{
	var bMissingFields = false;
	var strFields = "";
	
	if( theform.b_first.value.length < 2 ){
		bMissingFields = true;
		strFields += "   *  Kontaktdetaljer: Förnamn\n";
	}
	if( theform.b_last.value.length < 2 ){
		bMissingFields = true;
		strFields += "   *  Kontaktdetaljer: Efternamn\n";
	}
	if( theform.b_phone.value.length < 10 ){
		bMissingFields = true;
		strFields += "   *  Kontaktdetaljer: Telefon\n";
	}
	
		if( theform.b_email.value.search("@") == -1 || theform.b_email.value.search("[.*]") == -1 ){ 
		bMissingFields = true;
		strFields += "   *  Kontaktdetaljer: Email\n";
		}
	if( theform.b_addr.value == '' ){
		bMissingFields = true;
		strFields += "   *  Adress: Gatuadress\n";
	}
	if( theform.b_zip.value.length != 6 ){ 		bMissingFields = true;
		strFields += "   *  Adress: Postnr\n";
	}
	if( theform.b_city.value.length < 3 ){
		bMissingFields = true;
		strFields += "   *  Adress: Ort\n";
	}
	if( theform.b_country.value.length == '' ){
		bMissingFields = true;
		strFields += "   *  Adress: Land\n";
	}
		if( bMissingFields ) {
		alert( "Innan du kan fortsätta måste du fylla i följande fält:\n\n" + strFields +"\nVänligen fyll i alla fält korrekt i formuläret och\nklicka sedan på Skicka knappen." );
		return false;
	}
	return true;
}

if (self != top) top.location.replace(self.location);

Det skickas som sagt med denna kod:

<form action="http://domain.com/cgi-bin/blankett-sv.cgi" method="post" name="blankett" id="blankett" onsubmit="return CheckForm(this)" >

Dropdown menyn ser ut så här:

<select name="b_country"  id="b_country" class="impbox">
    <option selected="selected">Land</option>
    <option value="sv">Sverige</option>
    <option value="no">Norge</option>
    <option value="dk">Danmark</option>
    <option value="fi">Finland</option>
    <option value="al">&Aring;land</option>
    <option value="is">Island</option>
  </select>

Det är alltså i dessa tre delar befintlig kod som jag vill ha in möjligheten att skicka olika språkversioner.

Medlem sedan juni 20004 308 inlägg
#4

Du har glömt den viktiga biten från nitro2k01's exempel.

function CheckForm( theform )
{
	var bMissingFields = false;
	var strFields = "";
	
	if( theform.b_first.value.length < 2 ){
		bMissingFields = true;
		strFields += "   *  Kontaktdetaljer: Förnamn\n";
	}
	if( theform.b_last.value.length < 2 ){
		bMissingFields = true;
		strFields += "   *  Kontaktdetaljer: Efternamn\n";
	}
	if( theform.b_phone.value.length < 10 ){
		bMissingFields = true;
		strFields += "   *  Kontaktdetaljer: Telefon\n";
	}
	
		if( theform.b_email.value.search("@") == -1 || theform.b_email.value.search("[.*]") == -1 ){ 
		bMissingFields = true;
		strFields += "   *  Kontaktdetaljer: Email\n";
		}
	if( theform.b_addr.value == '' ){
		bMissingFields = true;
		strFields += "   *  Adress: Gatuadress\n";
	}
	if( theform.b_zip.value.length != 6 ){ 		bMissingFields = true;
		strFields += "   *  Adress: Postnr\n";
	}
	if( theform.b_city.value.length < 3 ){
		bMissingFields = true;
		strFields += "   *  Adress: Ort\n";
	}
	if( theform.b_country.selectedIndex==0 ){
		bMissingFields = true;
		strFields += "   *  Adress: Land\n";
	}
	if( bMissingFields ) {
		alert( "Innan du kan fortsätta måste du fylla i följande fält:\n\n" + strFields +"\nVänligen fyll i alla fält korrekt i formuläret och\nklicka sedan på Skicka knappen." );
		return false;
	}
	theform.action="http://domain.com/cgi-bin/blankett-"+theform.b_country[theform.b_country.selectedIndex].value+".cgi";
	return true;
}
Medlem sedan mars 2003168 inlägg
#5

Nu fungerar det! :)

Tack båda två!

258 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)