webForumDet fria alternativet

Select All()

6 svar · 223 visningar · startad av jimpa

jimpaMedlem sedan jan. 2001364 inlägg
#1

Hej
Jag använder detta script för flytta options mellan 1 par selectboxar. Om du tittar på funtionen "allSelect()" så selectar den alla options i angiven selectbox vid submit. Detta funkar ju bra när jag bara har 1 par select boxar. Hur kan få detta dynamiskt så att jag kan aävända flere par select boxar?

<SCRIPT LANGUAGE="JavaScript">
<!--

function copyToList(from,to)
{
	fromList = eval('document.forms[0].' + from);
	toList = eval('document.forms[0].' + to);
	if (toList.options.length > 0 && toList.options[0].value == 'temp')
	{
		toList.options.length = 0;
	}
	var sel = false;
	for (i=0;i<fromList.options.length;i++)
	{
		var current = fromList.options[i];
		if (current.selected)
		{
			sel = true;
			if (current.value == 'temp')
			{
				alert ('You cannot move this text!');
				return;
			}
			txt = current.text;
			val = current.value;
			toList.options[toList.length] = new Option(txt,val);
			fromList.options[i] = null;
			i--;
		}
	}
	if (!sel) alert ('You haven\'t selected any options!');
}

function allSelect()
{
  List = document.forms[0].chosen;
  if (List.length && List.options[0].value == 'temp') return;
  for (i=0;i<List.length;i++)
  {
     List.options[i].selected = true;
  }
}
// -->
</SCRIPT>

Formuläret (med två par selectboxar)

<FORM onSubmit="allSelect(); return false">
<TABLE CELLPADDING=10 CELLSPACING=0 BORDER=1>
<TR><TD><P>Possible options:<BR>
<SELECT NAME="possible" SIZE="4" MULTIPLE WIDTH=200 STYLE="width: 200px">
<OPTION VALUE="1">Option 1: House</OPTION>
<OPTION VALUE="2">Option 2: Chamber</OPTION>
<OPTION VALUE="3">Option 3: Kitchen</OPTION>
<OPTION VALUE="4">Option 4: Garden</OPTION>

</SELECT></TD>
<TD><A HREF="javascript:copyToList('possible','chosen')">--&gt;</A><BR>
<A HREF="javascript:copyToList('chosen','possible')">&lt;--</A></TD>
<TD><P>Chosen options:<BR>
<SELECT NAME="chosen" SIZE="4" MULTIPLE WIDTH=200 STYLE="width: 200px">
<OPTION VALUE="temp">Make your choice on the left
</SELECT></TD></TR>
<TR><TD COLSPAN=3 ALIGn=center></TD></TR>
</TABLE>

<TABLE CELLPADDING=10 CELLSPACING=0 BORDER=1>
<TR><TD><P>Possible options:<BR>
<SELECT NAME="possible2" SIZE="4" MULTIPLE WIDTH=200 STYLE="width: 200px">
<OPTION VALUE="1">Option 1: House</OPTION>
<OPTION VALUE="2">Option 2: Chamber</OPTION>
<OPTION VALUE="3">Option 3: Kitchen</OPTION>
<OPTION VALUE="4">Option 4: Garden</OPTION>

</SELECT></TD>
<TD><A HREF="javascript:copyToList('possible2','chosen2')">--&gt;</A><BR>
<A HREF="javascript:copyToList('chosen2','possible2')">&lt;--</A></TD>
<TD><P>Chosen options:<BR>
<SELECT NAME="chosen2" SIZE="4" MULTIPLE WIDTH=200 STYLE="width: 200px">
<OPTION VALUE="temp">Make your choice on the left
</SELECT></TD></TR>
<TR><TD COLSPAN=3 ALIGn=center><INPUT TYPE=submit VALUE="submit"></TD></TR>
</TABLE>
</FORM>

Mvh Jimpa

JojoxxMedlem sedan juni 20004 306 inlägg
#2
function allSelect()
{
  Lists=[document.forms[0].chosen,document.forms[0].chosen2];
  for(var i in Lists){
    List = Lists[i];
    if (List.length && List.options[0].value == 'temp') return;
    for (i=0;i<List.length;i++)
    {
       List.options[i].selected = true;
    }
  }
}
jimpaMedlem sedan jan. 2001364 inlägg
#3

Ja nästan så, men dock inte riktigt :)

Problemet är åxo att jag lopar ut x antal "par select boxar" från en databas villket innebär att jag inte vet hur många "chosen" det blir!

Formuläret skulle kunna ha "chosen1", "chosen2","chosen3","chosen4" etc...

Formuläret (med två par selectboxar)

Skulle kan alltså vara ett formulär med (10 par selectboxar)

JojoxxMedlem sedan juni 20004 306 inlägg
#4

Det är inga problem. Eftersom du loopar fram select-listorna från en databas använder du någon form av serverside-script (asp, php, xyz). Fyll bara på med listornas namn på denna rad:

Lists=[[red]document.forms[0].chosen,document.forms[0].chosen2[/red]];
jimpaMedlem sedan jan. 2001364 inlägg
#5

Får det inte att funka riktigt. Har gjort in funktion som hämtar en sträng med alla formlärs namn, typ:document.forms[0].chosen,document.forms[0].chosen2,document.forms[0].chosen3,document.forms[0].chosen4

Anropar funktionen så här:

<form name="form" method="POST" action="Update.asp" onSubmit="allSelect('<% Call getList() %>')">

Funktionen:

function allSelect(myList)
{
  List = myList
  if (List.length && List.options[0].value == 'temp') return;
  for (i=0;i<List.length;i++)
  {
     List.options[i].selected = true;
  }
}

Jag får inget felmeddelande men ingenting funkar! Någon som kan se vad jag gör för fel?

Peter SMedlem sedan dec. 20025 484 inlägg
#6
function allSelect(myList)
{
  Lists=myList.split(',');
  for(var i in Lists){
    List = eval(Lists[i]);
    if (List.length && List.options[0].value == 'temp') return;
    for (i=0;i<List.length;i++)
    {
       List.options[i].selected = true;
    }
  }
}

:)

jimpaMedlem sedan jan. 2001364 inlägg
#7

Tackar!!
Nu funkar det åtmintonde i IE!
När jag provar i Mozilla så funkar det också men efter att formuläret har submitats och informationen har sparats så redirectas man tillbaka tilll formulärs sidan, men då helt plöstligt funkar det inte :l det gåt inte ens att flytta options mellan fälten, det gjorde innan!

Någon som har en aning?

Genererad på 380 ms · cache AV · v20260730165559-full.f96bc7eb