webForum webForum sponsras med lina och serverplats av Binero AB

Gå tillbaka   webForum > Utveckling > Webbutveckling > Javascript

Javascript Här diskuteras det som rör Javascript, AJAX, DOM & DHTML.

Svar
 
Trådverktyg Visningsalternativ
Äldre 2005-10-20, 14:50   #1
room
Medlem
 
rooms avatar
 
Registrerad: 2001-03-22
Ort: Kristinehamn
Inlägg: 270
Lösningar: 0
Skapa listitems.

Hej alla javahackare.

Jag skulle vilja ha ett litet script för att skapa listitems utifrån en lista som jag redan har, typ genom dubbelklick på en item i den fulla listan gör att det skapas en ny item i den tomma listan.

Sen skulle jag även vilja (i den listan man fyller på) kunna flytta en item upp och ner i listan på nåt sätt.

Tacksam för tips om hur man ska göra detta!
room besöker inte forumet just nu   Svara med citat
Äldre 2005-10-20, 16:10   #2
Peter S
Medlem
 
Registrerad: 2002-12-15
Ort: Hudiksvall
Inlägg: 5 477
Lösningar: 806
Skall det item man väljer kopieras eller flyttas till den andra <select>-listan?
Peter S besöker inte forumet just nu   Svara med citat
Äldre 2005-10-20, 20:47   #3
room
Medlem
 
rooms avatar
 
Registrerad: 2001-03-22
Ort: Kristinehamn
Inlägg: 270
Lösningar: 0
Spelar ingen roll egentligen, det räcker med om den kopieras.
room besöker inte forumet just nu   Svara med citat
Äldre 2005-10-20, 20:53   #4
Peter S
Medlem
 
Registrerad: 2002-12-15
Ort: Hudiksvall
Inlägg: 5 477
Lösningar: 806
Alrighty then:
Kod:
<script type="text/javascript">

function moveLocal(obj, dir, sel){
  sel = obj.form.elements[sel];

  if (sel.selectedIndex > -1){
    if ((dir == "up" && sel.selectedIndex == 0)
	|| (dir == "down" && sel.selectedIndex == sel.options.length - 1)){
      return;
    }

    var opts   = sel.options,
	arr    = [],
	oldPos = sel.selectedIndex,
	newPos = oldPos - (dir == "up" ? 1 : -1);

    for (var i = 0; i < opts.length; ++i){
      if (i == oldPos){
	arr[newPos] = opts[oldPos];
      } else if (i == newPos){
	arr[oldPos] = opts[newPos];
      } else {
	arr[i] = opts[i];
      }
    }

    opts.length = index = 0;

    for (var i = 0; i < arr.length; ++i){
      opts[i] = new Option(arr[i].text, arr[i].value);
    }
  }
}

function addNew(obj, sel){
  var elm      = obj.options[obj.selectedIndex],
      targOpts = obj.form.elements[sel].options,
      len      = targOpts.length,
      exists   = false;

  for (var i = 0; i < len; ++i){
    if (targOpts[i].text == elm.text
	&& targOpts[i].value == elm.value){

      exists = true;
      break;
    }
  }

  if (!exists){
    targOpts[targOpts.length] = new Option(elm.text, elm.value);
  }
}

</script>

<form>
  <div style="float:left">
    <select size="8" name="s1" ondblclick="addNew(this, 's2')">
      <option>A</option>
      <option>B</option>
      <option>C</option>
      <option>D</option>
      <option>E</option>
      <option>F</option>
    </select>
  </div>
  <div style="float:left; padding-left:5px">
    <select size="8" name="s2">
      <option>G</option>
      <option>H</option>
      <option>I</option>
      <option>J</option>
      <option>K</option>
      <option>L</option>
    </select>
  </div>
  <div style="float:left;margin:35px 10px 0 10px">
    <button type="button" onclick="moveLocal(this, 'up', 's2')">up</button>
    <br>
    <button type="button" onclick="moveLocal(this, 'down', 's2')">down</button>
  </div>
</form>
Peter S besöker inte forumet just nu   Svara med citat
Äldre 2005-10-21, 07:39   #5
room
Medlem
 
rooms avatar
 
Registrerad: 2001-03-22
Ort: Kristinehamn
Inlägg: 270
Lösningar: 0
Helt suveränt. Bara en liten grej, när man trycker på Up eller Down så tappar den focus, går det ha kvar focus på något sätt när man trycker, så att man kan trycka flera gånger på upp och ner.

Tack som fan, det här är kanonskript för mig!
room besöker inte forumet just nu   Svara med citat
Äldre 2005-10-21, 08:35   #6
room
Medlem
 
rooms avatar
 
Registrerad: 2001-03-22
Ort: Kristinehamn
Inlägg: 270
Lösningar: 0
Tillägg: Skulle även vilja ha möjligheten att ta bort en option från selectlistan. Typ en ondblclick handler i selecten som heter s2 som gör nåt i stil med this.option.delete. Går det att få till?
room besöker inte forumet just nu   Svara med citat
Äldre 2005-10-21, 09:07 Markerad som löst av room   #7
Peter S
Medlem
 
Registrerad: 2002-12-15
Ort: Hudiksvall
Inlägg: 5 477
Lösningar: 806
leende

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

function moveLocal(obj, dir, sel){
  sel = obj.form.elements[sel];

  if (sel.selectedIndex > -1){
    if ((dir == "up" && sel.selectedIndex == 0)
	|| (dir == "down" && sel.selectedIndex == sel.options.length - 1)){
      return;
    }

    var opts   = sel.options,
	arr    = [],
	oldPos = sel.selectedIndex,
	newPos = oldPos - (dir == "up" ? 1 : -1);

    for (var i = 0; i < opts.length; ++i){
      if (i == oldPos){
	arr[newPos] = opts[oldPos];
      } else if (i == newPos){
	arr[oldPos] = opts[newPos];
      } else {
	arr[i] = opts[i];
      }
    }

    opts.length = index = 0;

    for (var i = 0; i < arr.length; ++i){
      opts[i] = new Option(arr[i].text, arr[i].value);
    }

    opts[newPos].selected = true;
  }
}

function addNew(obj, sel){
  var elm      = obj.options[obj.selectedIndex],
      targOpts = obj.form.elements[sel].options,
      len      = targOpts.length,
      exists   = false;

  for (var i = 0; i < len; ++i){
    if (targOpts[i].text == elm.text
	&& targOpts[i].value == elm.value){
      exists = true;
      break;
    }
  }

  if (!exists){
    targOpts[targOpts.length] = new Option(elm.text, elm.value);
  }
}

function rm(obj){
  var opts   = obj.options,
      len    = opts.length,
      arr    = [],
      oldPos = obj.selectedIndex;

  for (var i = 0; i < len; ++i){
    if (i != oldPos){
      arr.push_back(opts[i]);
    }
  }

  opts.length = 0;

  for (var i = 0; i < len - 1; ++i){
    opts[i] = new Option(arr[i].text, arr[i].value);
  }

  if (opts.length != 0){
    opts[oldPos ? oldPos - 1 : 0].selected = true;
  }
}

Array.prototype.push_back = function(o){
  this[this.length] = o;
}

</script>

<form>
  <div style="float:left">
    <select size="8" name="s1" ondblclick="addNew(this, 's2')">
      <option>A</option>
      <option>B</option>
      <option>C</option>
      <option>D</option>
      <option>E</option>
      <option>F</option>
    </select>
  </div>
  <div style="float:left; padding-left:5px">
    <select size="8" name="s2" ondblclick="rm(this)">
      <option>G</option>
      <option>H</option>
      <option>I</option>
      <option>J</option>
      <option>K</option>
      <option>L</option>
    </select>
  </div>
  <div style="float:left;margin:35px 10px 0 10px">
    <button type="button" onclick="moveLocal(this, 'up', 's2')">up</button>
    <br>
    <button type="button" onclick="moveLocal(this, 'down', 's2')">down</button>
  </div>
</form>
Peter S besöker inte forumet just nu   Svara med citat
Äldre 2005-10-21, 09:39   #8
room
Medlem
 
rooms avatar
 
Registrerad: 2001-03-22
Ort: Kristinehamn
Inlägg: 270
Lösningar: 0
Tack Peter S du är en klippa!!!
room besöker inte forumet just nu   Svara med citat
Svar
webForum > Utveckling > Webbutveckling > Javascript

Trådverktyg
Visningsalternativ

Forumregler
Du får inte posta nya trådar
Du får inte posta svar
Du får inte bifoga filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är i GMT +1. Klockan är nu 15:18.


Powered by: vBulletin Version 3.8.6
Copyright © webForum