Avatar billede goose Nybegynder
31. oktober 2005 - 14:07 Der er 8 kommentarer og
1 løsning

Sortering af punkter til kommasep. streng

Jeg har fundet nedenstående script her på E på et tidspunkt, så det er ikke noget jeg selv har lavet.

Jeg ville gerne hvis det kunne laves således, at når man har sorteret de enkelte punkter, så bliver der sendt en kommasepareret streng med den nye rækkefølge.

Denne streng vil jeg så bruge i ASP til at ændre en sorteringsrækkefølge, men hvordan får jeg lavet denne kommaseparerede streng ?!?

<script type="text/javascript">
function move(elm,dir){
  if(typeof elm == 'string');
    elm = document.getElementById(elm);
  var num = elm.selectedIndex;
  if(num == -1){
    alert('No selection');
    return;
  }
  if(dir=='up' && num==0 || dir=='down' && num==(elm.length-1))return;
  if(dir=='add'){
    var txt = prompt('Text for the option','Text');
    var val = prompt('Value for the option','Value');
    if(txt == "" && val == "" || txt == 'Text' && val == 'Value'){
      alert('You must supply at least a value or a text !-)');
      return;
    }
    if(txt == "" || txt == 'Text')
      txt = val;
    if(val == "" || val == 'Value')
      val = txt;
    var opt = new Option(txt,val);
      elm.insertBefore(opt,elm.options[num]);
    opt.text = txt;
    return;
  }
  var opt = elm.removeChild(elm.options[num]);
  if(dir=='remove')return;
  if(dir=='up')
    elm.insertBefore(opt,elm.options[num-1]);
  else
    elm.insertBefore(opt,elm.options[num+1]);
}
</script>

<form method="post" action="resultat.asp" name="form">
<select id="valgSelect" multiple="multiple" size="10" onchange="/*alert(this.value);*/" style="float:left;" name="valg">
  <option value="1">Option 1</option>
  <option value="2">Option 2</option>
  <option value="3">Option 3</option>
  <option value="4">Option 4</option>
  <option value="5">Option 5</option>
  <option value="6">Option 6</option>
  <option value="7">Option 7</option>
  <option value="8">Option 8</option>
  <option value="9">Option 9</option>
</select>
<span>
  <button onclick="move('valgSelect','up');" title="Move up">^</button><br>
  <button onclick="move('valgSelect','down');" title="Move down">v</button>
</span>
<INPUT TYPE="submit" VALUE="send">
</form>

/Goose
Avatar billede nikolajdu Nybegynder
31. oktober 2005 - 14:18 #1
function validate( f ){
    var data = "";
    for (var i = 0; i < f.valgSelect.options.length; i++){
        data += f.valgSelect.options[i].value + ",";
    }
    alert(data);
}
</script>

<form method="post" action="resultat.asp" name="form" onsubmit="return validate( this )";>

Sådan i den dur?
Avatar billede goose Nybegynder
31. oktober 2005 - 14:28 #2
Du er nok nød til at sætte det ind i min kode da jeg ikke har en dyt forstand på javascript.

Derudover ser det ud til at det du har lavet blot er en validering, det jeg ønsker er, at den nye sortering bliver sendt via form til en ny side.

/Goose
Avatar billede nikolajdu Nybegynder
31. oktober 2005 - 14:33 #3
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
    <title>Untitled</title>
</head>

<body>
<script type="text/javascript">
function move(elm,dir){
  if(typeof elm == 'string');
    elm = document.getElementById(elm);
  var num = elm.selectedIndex;
  if(num == -1){
    alert('No selection');
    return;
  }
  if(dir=='up' && num==0 || dir=='down' && num==(elm.length-1))return;
  if(dir=='add'){
    var txt = prompt('Text for the option','Text');
    var val = prompt('Value for the option','Value');
    if(txt == "" && val == "" || txt == 'Text' && val == 'Value'){
      alert('You must supply at least a value or a text !-)');
      return;
    }
    if(txt == "" || txt == 'Text')
      txt = val;
    if(val == "" || val == 'Value')
      val = txt;
    var opt = new Option(txt,val);
      elm.insertBefore(opt,elm.options[num]);
    opt.text = txt;
    return;
  }
  var opt = elm.removeChild(elm.options[num]);
  if(dir=='remove')return;
  if(dir=='up')
    elm.insertBefore(opt,elm.options[num-1]);
  else
    elm.insertBefore(opt,elm.options[num+1]);
}

function validate( f ){
    var data = "";
    for (var i = 0; i < f.valgSelect.options.length; i++){
        data += f.valgSelect.options[i].value + ",";
    }
    alert(data);
}
</script>

<form method="post" action="resultat.asp" name="form" onsubmit="return validate( this )";>
<select id="valgSelect" multiple="multiple" size="10" onchange="/*alert(this.value);*/" style="float:left;" name="valg">
  <option value="1">Option 1</option>
  <option value="2">Option 2</option>
  <option value="3">Option 3</option>
  <option value="4">Option 4</option>
  <option value="5">Option 5</option>
  <option value="6">Option 6</option>
  <option value="7">Option 7</option>
  <option value="8">Option 8</option>
  <option value="9">Option 9</option>
</select>
<span>
  <button onclick="move('valgSelect','up');" title="Move up">^</button><br>
  <button onclick="move('valgSelect','down');" title="Move down">v</button>
</span>
<INPUT TYPE="submit" VALUE="send">
</form>


</body>
</html>

:))
Avatar billede goose Nybegynder
31. oktober 2005 - 14:49 #4
Jeg ved ikke om det er mig der ikke forstår at udtrykke mig ;o), men jeg ønsker ikke at få den alert boks at se, blot at få sendt strengen til en ny side ?

/Goose
Avatar billede softspot Forsker
31. oktober 2005 - 14:52 #5
Du skal som sådan "bare" selecte alle elementer i listen, inden din form bliver submitted, for så ligger værdierne i request.form("valg") når du kommer over på serveren. Således:

<script type="text/javascript">
function move(elm,dir){
  if(typeof elm == 'string');
    elm = document.getElementById(elm);
  var num = elm.selectedIndex;
  if(num == -1){
    alert('No selection');
    return;
  }
  if(dir=='up' && num==0 || dir=='down' && num==(elm.length-1))return;
  if(dir=='add'){
    var txt = prompt('Text for the option','Text');
    var val = prompt('Value for the option','Value');
    if(txt == "" && val == "" || txt == 'Text' && val == 'Value'){
      alert('You must supply at least a value or a text !-)');
      return;
    }
    if(txt == "" || txt == 'Text')
      txt = val;
    if(val == "" || val == 'Value')
      val = txt;
    var opt = new Option(txt,val);
      elm.insertBefore(opt,elm.options[num]);
    opt.text = txt;
    return;
  }
  var opt = elm.removeChild(elm.options[num]);
  if(dir=='remove')return;
  if(dir=='up')
    elm.insertBefore(opt,elm.options[num-1]);
  else
    elm.insertBefore(opt,elm.options[num+1]);
}
function selectAll(frm) {
  for(var i=0; i < frm.valg.options.length; i++)
    frm.valg.options[i].selected = true;
}
</script>

<form method="post" action="resultat.asp" name="form" onsubmit="selectAll(this)">
<select id="valgSelect" multiple="multiple" size="10" onchange="/*alert(this.value);*/" style="float:left;" name="valg">
  <option value="1">Option 1</option>
  <option value="2">Option 2</option>
  <option value="3">Option 3</option>
  <option value="4">Option 4</option>
  <option value="5">Option 5</option>
  <option value="6">Option 6</option>
  <option value="7">Option 7</option>
  <option value="8">Option 8</option>
  <option value="9">Option 9</option>
</select>
<span>
  <button onclick="move('valgSelect','up');" title="Move up">^</button><br>
  <button onclick="move('valgSelect','down');" title="Move down">v</button>
</span>
<INPUT TYPE="submit" VALUE="send">
</form>
Avatar billede goose Nybegynder
31. oktober 2005 - 14:57 #6
softspot >> YES, det var netop det jeg skulle bruge :o)

Smid et svar

/Goose
Avatar billede softspot Forsker
31. oktober 2005 - 15:02 #7
Kommer der... :)
Avatar billede goose Nybegynder
31. oktober 2005 - 15:16 #8
- og pointene kommer her :o)

Tak for hjælpen.

/Goose
Avatar billede softspot Forsker
31. oktober 2005 - 15:19 #9
Velbekomme og tak for point :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester