canadian pharm viagra certified buy levitra without a prescription cialis 5mg generic levitra usat cialis acomplia for sale buy canadian pharmacy buy acomplia without prescription usat non prescription viagra cheap buy levitra without prescription cheapest pills on the net acomplia without a prescription gernic viagra sales 1 online pharmacy fast canadian pharmacy viagra buy usat buy acomplia online without prescription cheap can you get viagra without prescription online acomplia no prescription cialis without prescription fast buy illegal viagra canada buy discount propecia sales cialis canadian sales cialis in canada buy meds sales canadian generic viagra online sales canadian levitra fast delivery levitra price discounts levitra online canada online levitra without a prescription cheapest viagra certified cheap viagra from canada certified cialis canada pharmacy online delivery cialiscanada buy discount levitra fast buy cialis usa cheap buy cialis without prescription cost of cialis buy acomplia no prescription delivery canadian cialis no prescription buy viagra online get viagra sales generic daily cialis canadian viagra do you need a prescription for viagra online pharmacies china cheap cialis canadian cilias how much is propecia fast canada viagra fast cialis from canada buy best viagra online cost cialis daily daily cialis online fast buy viagra without prescription discounts how much does cialis cost delivery brand cialis canadian buying acomplia levitra online cheap levitra 20mg can i buy viagra without prescription online cialis online buying viagra usat how much does levitra cost cheap cheap viagra canada delivery canadian+viagra fast buying viagra from canada sale canadian pharmacies cialis for sale canadian pharmacy levitra canadian levitra without prescription buy viagra online cialis without perscribtion certified canadian pharmacy scam buy propecia online no prescription cheap generic propecia india fast buy cialis fast can i buy viagra without prescription online cheap canadian pharmacy fof cialis fast canada cialis cialis generic canadian natural viagra cialis cheap buy propecia online female viagra do you need a prescription for viagra in canada daily levitra generic viagra canada canadian medstore cialis on sale sale levitra next day cialisis on line discount cialis canadian levitra 5mg buy levitra online usat cialis online sales discounts canada online pharmacy discounts canada viagra no prescription delivery cheap viagra no prescription delivery get propecia generic viagra online discounts cialis canadian pharmacy sale cialis price non prescription ultracet cilias canada cialis suppliers online acomplia without prescription buy discount viagra buy how much does cialis cost sales cialic canada generic cialis daily canadian canadian pharmacy viagra scam sale cialis canada online pharmacy sale cialis by mail cialis cost canadian pharmacy viagra sale cialis generic buying real viagra online certified canadian levitra suppliers buy 50mg viagra sale buy propecia without a prescription cheap viagra canadian cialis 20mg dicount levitra china online pharmacies levitra for sale canada pharm usat canadapharmacyonline buy cialis pills buy buying viagra in canada discounts med store canada sale buy propecia without prescription cialis one a day certified cialis on the spot generic for cialis cheap best price on generic propecia cheap buy viagra no prescription once daily cialis buy viagra usa canadian pharmacy cialis fast cialis no prescription canada sale how fast does viagra work how to get viagra without prescription cheap propecia without perscription discounts buy viagra online no prescription delivery no prescription online pharmacy discounts buy cialis online certified cialis prescription cialis one day cost for daily cialis do you need a prescription to get viagra canadian canadian drug store propecia certified how do you get viagra mexico pharmacy abilify can i buy propecia without a prescription delivery canada pharmacy brand cialis cheap buy acomplia genericpropecia cheap how do i get viagra buy real viagra online daily cialis cost levitra daily use canadian one a day cealis levitra cost sale buy 5mg propecia bay propecia cialis canada online certified generic levitra usa day cialis canadian needs a prescription in us usat cialis 100mg discounts levitra daily indian viagra online can you get viagra without a prescription canadians buy viagra from usa canadian levitra canada canadian pharm meds sale canadapharm certified cialis order cheap viagra pills cialis in a day buy canadian levitra buy propecia no prescription certified generic cialis no rx cialis sales generic cialis from india cialis from india cialis substitute buy real viagra online online fast online rx fast cialis online cheapest cheap canadian canadian pharmacy no prescription fast canada pharmacy cialis discounts india online pharmacy canadian pharmacy fast delivery discounts accomplia no prescription discounts canada propecia certified cost of propecia in canada buy how much does propecia cost how to get real viagra gel viagra levitra canadian pharmacy canadian pharm buy cialisis sales buy viagra online without prescription generic levitra master card sale levitra 100mg get viagra without prescription usat get viagra without a prescription canadian viagra cheap canada pharmacy delivery cheap viagra for sale female viagra pills online no 1 online viagra sale getting viagra without prescription fast acomplia online cialis online no rx one a day cialis levitra canadian how to get viagra usat cheap viagra in canada generic viagra india viagra certified canadan viagra canada based pharmacy without a prescription indian viagra get prescription to propecia delivery med store buy cheapest viagra without prescription canadian cialis discounts online ciali s sale cialis canada how much is cialis generic propecia canadian acomplia usa canadian levitra sales buy can i buy viagra online sale canadian pharmacies lavitra canada viagra generic delivery cost of cialis daily usat how to get viagra without a prescription delivery online canadian cialis 50mg get cialis online cheap acomplia does it work how do i get viagra without a prescription online canadian propecia delivery buy viagra online in canada cheap online levitra sales online cialis usa delivery cialis daily generic sales can i buy viagra without a prescription cost of daily cialis usat cialis 5mg price canadian pharmacies no prescription generic levitra online 20mg levitra canadian pharmacy online how much does propecia cost canadian one a day cielas cheap soft cialis usat cialis online india cialis daily cheap cialis no prescription daily cialis cost of propecia cheap canadian rx cialis 1 a day gereric cialis generic cialis buy canada pharmacy cialis online cialis without a prescription delivery cialis daily cost cialis order cialis daily price how much is levitra fast canadian viagra professional do you need prescription for viagra cialis soft tabs canadianpharmacy mexico pharmacy sale brand levitra for sale delivery inexpensive viagra levitra canada pharmacy buy cialis daily online buy once daily cialis cost sales

GUJS

O Maior Fórum Javascript do Brasil

Movendo itens entre list boxs

Hoje em dia, este é um recurso muito usado em formulários em geral. Permite que sejam selecionados vários itens para um relatório, por exemplo. Normalmente se tem um listbox com os ítens disponíveis, e outro, inicialmente vazio, ficam os itens selecionados na primeira list.

Um bom exemplo seria em um cadastro de vendedor, o usuário deve selecionar as cidades que aquele vendedor atua. Numa list, aparece todas as cidades cadastradas. Na outra, só as seleiconadas para aquele vendedor.

Em primeiro lugar, teremos 2 lists: listOrigem e a listDestino.

<select name="listOrigem" id="listOrigem" MULTIPLE size="10">
<option value="1">Porto Alegre</option>
<option value="2">São Paulo</option>
<option value="3">Rio de Janeiro</option>
<option value="4">Natal</option>
<option value="5">Fortaleza</option>
</select>

<select name="listDestino" id="listDestino" MULTIPLE size="10">
</select>

e quatro simples funções, facilmente adaptáveis para o uso em outras situações:

//1. Para passar todos os ítens da list de origem para a de destino:

function allLeft2Right() {
  var listOri = document.getElementById("listOrigem")
  var listDest = document.getElementById("listDestino");
  for(var i = 0; i < listOri.length; i++) {
    var opcao = listOri.options[i];
    var novaOpcao = new Option(opcao.text, listDest.length);
    novaOpcao.value = opcao.value;
    listOri.remove(i);
    try {
      listDest.add(novaOpcao,null);
    } catch (e) {
      listDest.add(novaOpcao);
    }
    i--;
  }
}

//2. função para passar todos os ítens do destino para a origem:

function allRight2Left() {
  var listOri = document.getElementById("listOrigem")
  var listDest = document.getElementById("listDestino");
  for(var i = 0; i < listDest.length; i++) {
    var opcao = listDest.options[i];
    var novaOpcao = new Option(opcao.text, listOri.length);
    novaOpcao.value = opcao.value;
    listDest.remove(i);
    try {
      listOri.add(novaOpcao,null);
    } catch (e) {
      listOri.add(novaOpcao);
    }
    i--;
  }
}

//3. Função para apenas os ítens selecionados da origem para o destino:

function left2Right() {
  var listOri = document.getElementById("listOrigem")
  var listDest = document.getElementById("listDestino");
  for(var i = 0; i < listOri.length; i++) {
    var opcao = listOri.options[i];
    if(opcao.selected) {
      var novaOpcao = new Option(opcao.text, listDest.length);
      novaOpcao.value = opcao.value;
      listOri.remove(i);
      try {
        listDest.add(novaOpcao,null); //Firefox
      } catch(e) {
        listDest.add(novaOpcao); //IE
      }
      i--;
    }
  }
}

//4. e por último, para passar os ítens marcados do destino para a origem

function right2Left() {
  var listOri = document.getElementById("listOrigem")
  var listDest = document.getElementById("listDestino");
  for(var i = 0; i < listDest.length; i++) {
    var opcao = listDest.options[i];
    if(opcao.selected) {
      var novaOpcao = new Option(opcao.text, listOri.length);
      novaOpcao.value = opcao.value;
      listDest.remove(i);
      try {
        listOri.add(novaOpcao,null);
      } catch (e) {
        listOri.add(novaOpcao);
      }
      i--;
    }
  }
}

Exemplo funcionando:









Agora é só vc adaptar. Se preferir que no OnDblClick no combo de origem passar para o destino, é só colocar no OnDblClick do listOrigem a chamada ao left2Right. Poderia criar dois botões também para passar todos os ítens de um campo para o outro.

Bom, espero ter ajudado. Muitas vezes já procurei um artigo como esse, com exemplos na WEB, porém não encontrei. Então fica aqui minha contribuição.

22 Comentários para “Movendo itens entre list boxs”

  1. Felipe Says:

    Amigo, uma dúvida, tbm fiz um código semelhante a este, porém, na hora que passo um valor para outro campo, gostaria que ele aparecesse selecionado, ou então, quando ele perder o foco, todos os campo que adicionei para o outro ficassem selecionados, se puder dar uma dica agradeço, vlw!

  2. Marcos Says:

    Otimo tutorial amigo..
    parabens!!

  3. Rafael Quines Says:

    Blz, Mto obrigado. Qq dúvida, é só contatar…

    T+

  4. Joe Says:

    Ótimo post, era o que eu precisava, foi de grande ajuda.
    []’s

  5. Rafael Quines Says:

    Blz. Qualquer dúvida, só perguntar..

    Flw

  6. Fernanda Says:

    Excelente tutorial, Rafael… Valeu mesmo, salvou o meu Natal!! :)
    Forte abraço!!!

  7. Pedro Paulo Says:

    Muito bom, estava tendo um problema no firefox com outro script e esse funcionou! :-)
    Um abraço!

  8. Rafael Quines Says:

    Blz.. Qq dúvida é só postar aqui OK!!..

    Valeu. Flw

  9. Alan Says:

    Amigo, uma dúvida, tbm fiz um código semelhante a este, porém, na hora que passo um valor para outro campo, gostaria que ele aparecesse selecionado, ou então, quando ele perder o foco, todos os campo que adicionei para o outro ficassem selecionados, se puder dar uma dica agradeço, vlw

  10. Rafael Quines Says:

    Kra, na hora de monstar os Option, pode setar um atributo selected = true. Ali no exemplo, faria novaOpcao.selected = true; e o evento de perder foco de um objeto seria o evento onBlur do Javascript, mas se tá flndo de um ítem perder o foco, teria que fazer no evento onClick e depois testar se tá selecionado ou não..

    Flw

  11. Alan Says:

    Obrigado, tentei colocar o novaOpcao.selected = true; antes de vc comentar, mas não funcionou….

  12. Rafael Quines Says:

    Kra, nao faz como lhe falei. Seta o selected após já ter adicionado a option ao objeto select. Ae faça: objSelect.options[x].selected = true

    Enquanto a option nao está associada a um select, ele nao tem essa propriedade. Tenta ae e ve se funciona..

    Valeu

  13. Alan Says:

    Valeu amigão! Funcionou!

  14. Marco AUrélio Says:

    teria alguma forma de ir clicando no campo multiple e ja ir selecionando se segurar o control?

  15. Ineseeneors Says:

    Hi
    Good site
    came on this wonderful site
    Very all is simple and with taste.

  16. Michael Says:

    Como eu faço pra recuperar os dados do segundo select ? Usando $_POST eu não estou conseguindo

  17. Rafael Quines Says:

    no campo NAME do seu select, coloque um nome_var[] (abre e fecha colchetes). Desse maneira, no $_POST vc vai ter uma variável chamada nome_var que será um array, e só conterá os values dos items selecionados.

    Att

  18. Michael Says:

    não consegui de jeito nenhum. O select destino tá assim:

    E aí pra testar eu to pondo um echo no $_POST['nome_var'] na página que recebe os dados do form mas não tá dando certo. É assim mesmo que eu recebo os dados ?

  19. Rafael Quines Says:

    Kra, tenta fazer o seguinte…

    Dá um $_REQUEST['nome_var']

    Teu form pode estar no GET, o REQUEST não importa, se tiver no GET ou no POST, o REQUEST pega…

    em resumo, substitui o $_POST['nome_var'] por $_REQUEST['nome_var']

    flw

  20. Michael Says:

    Eu descobri o problema. Eu tenho que selecionar as opções pro $_POST conseguir pegar. Aí eu to tentando fazer aqui em javascript quando o cara clicar em submit, ele selecionar o select todo.

  21. Rafael Quines Says:

    É, como te falei, vai estar na variável apenas os items selecionados.

    p/ selecionar todo o select, use o atributo selected = true em cada um das options.

    flw

  22. Juliano Says:

    cara muito bom tutorial,
    Só gostaria de saber como adptar ele para que add itens no destino e não apage o da origem.
    se eu clicar 2 vezes Em Porto Alegre ele aparece 2 Porto Alegre no destino e não Apaga da Origem.
    Teria como?

Comentários

©2010 GUJS. Todos os direitos reservados.