Got an even better version than before!
This means that you can just keep clicking on "up" to move something up and
the same for down (ie it remembers which one your moving!).
I've also added in some CF so that you can see the data you've just posted
in the list!
Paul
PS I'll stop doing this now, because it's taking up my time! It's fun
though. Maybe I'll make a Netscape version of the code sometime in the
future!
----------------page code----------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Untitled</title>
</head>
<body>
<cfset my_js_array = "'Paul', 'Chris', 'Nick', 'Kevin', 'Ian', 'Cat',
'John', 'Marc', 'Dean'">
<cfif IsDefined("form.hidden_list")>
<cfset my_js_array = "'" & REReplace(form.hidden_list,",", "', '",
"all") & "'">
</cfif>
<script language="JavaScript">
//var values = new Array('Paul', 'Chris', 'Nick', 'Kevin', 'Ian', 'Cat',
'John', 'Marc', 'Dean');
var values = new Array(<cfoutput>#my_js_array#</cfoutput>);
function changeOrder(action) {
var form = document.forms[0];
check = String(form.order.value);
do_update = "yes";
if (check.match('^\s*$')) {
alert('You have not selected anything!');
do_update = "no";
}
order_value = form.order.value;
if (action == 'up' && do_update == 'yes') {
//alert('up');
if ( order_value == 0) {
alert('This value cannot go up any further');
}
else {
// find values of the array
swap_value1 = values[order_value];
new_order_value = parseInt(order_value) - 1;
swap_value2 = values[new_order_value];
//alert('order value: ' + order_value + ' new order value: ' +
new_order_value);
//alert('1: ' + swap_value1 + ' 2: ' + swap_value2);
// swap them over
values[order_value] = swap_value2;
values[new_order_value] = swap_value1;
// repopulate the array
for(i = 0; i < values.length; i++) {
form.order.options[i].value = values[i];
//alert('form.order.options[' + i + ']: ' + values[i]);
}
refreshSelectBox();
form.order.options[new_order_value].selected = true;
}
}
else {
//alert('down');
if ( order_value == ( values.length - 1 ) ) {
alert('This value cannot go down any further');
}
else {
// find values of the array
swap_value1 = values[order_value];
new_order_value = parseInt(order_value) + 1;
swap_value2 = values[new_order_value];
//alert('order value: ' + order_value + ' new order value: ' +
new_order_value);
//alert('1: ' + swap_value1 + ' 2: ' + swap_value2);
// swap them over
values[order_value] = swap_value2;
values[new_order_value] = swap_value1;
// repopulate the array
for(i = 0; i < values.length; i++) {
form.order.options[i].value = values[i];
//alert('form.order.options[' + i + ']: ' + values[i]);
}
refreshSelectBox();
form.order.options[new_order_value].selected = true;
}
}
writeList();
// use this if you want to refresh the page!
}
function writeList() {
var form = document.forms[0];
form.hidden_list.value = "";
for(i = 0; i < values.length; i++) {
temp = form.hidden_list.value;
if ( i != 0 ) {
form.hidden_list.value = temp + ',' + values[i];
} else {
form.hidden_list.value = values[i];
}
//alert(form.hidden_list.value);
}
}
function refreshSelectBox(){
// values array holds all the relevant data
// delete the current select box array
var form = document.forms[0];
for(i = 0; i < values.length; i++) {
// delete the first in the array because we are deleting them one by
one (ie you can't delete the third one if there are only two there)!
// alert(form.order.options[0].value);
form.order.options[0] = null;
}
for(i = 0; i < values.length; i++) {
newOption = new Option(values[i], i);
form.order.options[i] = newOption;
}
}
</script>
<cfif IsDefined("form.hidden_list")>
List Passed To Form: <Cfoutput>#form.hidden_list#</cfoutput><br><br>
</cfif>
<form method="post" onsubmit="writeList();">
<script language="JavaScript">
document.write('<select name="order" size="' + values.length + '">');
refreshSelectBox();
</script>
</select>
<!--- this is to output the array as a list for the next page to take --->
<input type="hidden" name="hidden_list" value="">
<input type="Button" value="Up" onclick="changeOrder('up');">
<input type="Button" value="Down" onclick="changeOrder('down');">
<input type="submit" value="Finished Ordering">
</form>
</body>
</html>
----------------page code----------------
> -----Original Message-----
> From: Sean Blenkhorn [mailto:[EMAIL PROTECTED]]
> Sent: 31 October 2000 15:33
> To: Fusebox
> Subject: RE: Multiple Select Box
>
>
>
> I think he means to have a select box with a size of 5 and have any number
> of items in it.... but have the ability to choose one item... and move the
> item up or down in priority.... as if you are ordering sections
> of a portal
> site... or ordering the order of jobs in a queue.
>
> I don't have the JS to do this.... but it seems easy enough to write from
> scratch.
>
> Sean
>
>
> -----Original Message-----
> From: David Huyck [mailto:[EMAIL PROTECTED]]
> Sent: Tuesday, October 31, 2000 10:03 AM
> To: Fusebox
> Subject: Re: Multiple Select Box
>
>
> Neil--
>
> > Anyone out there got a script which reorders a multiline text menu? for
> > instance I have 4 items in it :
> >
> > 1
> > 2
> > 3
> > 4
> >
> > I only want 1 select menu visible with an up button and a down button,
> when
> > I click the up button it push content up when pusing down - it
> goes down
>
> Do you just mean something like:
> <select name="pickIt" size="1"><options...></select>
>
> I'm not sure what you mean by reordering the menu...?
>
> David Huyck
> [EMAIL PROTECTED]
>
> ------------------------------------------------------------------
> ----------
> --
> To Unsubscribe visit
> http://www.houseoffusion.com/index.cfm?sidebar=lists&body=lists/fusebox or
> send a message to [EMAIL PROTECTED] with 'unsubscribe' in
> the body.
>
> ------------------------------------------------------------------
> ------------
> To Unsubscribe visit
http://www.houseoffusion.com/index.cfm?sidebar=lists&body=lists/fusebox or
send a message to [EMAIL PROTECTED] with 'unsubscribe' in
the body.
------------------------------------------------------------------------------
To Unsubscribe visit
http://www.houseoffusion.com/index.cfm?sidebar=lists&body=lists/fusebox or send a
message to [EMAIL PROTECTED] with 'unsubscribe' in the body.