Problema Javascript (Resolvido)

PHP, Java, JavaScript, XML, XHTML, HTML, CSS, ASP, Delphi, Assembly, LaTeX, C, UML, Flash, Perl, SQL, Python, Zope, Pascal, WML. Se conhece mais de 3 siglas referidas, este é o forum para si.

Moderadores: Administradores, Moderadores

Problema Javascript (Resolvido)

Mensagempor pedrolm » Quarta Set 05, 2007 12:22

Esta função passa dados de uma listbox para outra:
Código: Seleccionar todos
<script language="JavaScript">
function move(MenuOrigem, MenuDestino){
    var arrMenuOrigem = new Array();
    var arrMenuDestino = new Array();
    var arrLookup = new Array();
    var i;
    for (i = 0; i < MenuDestino.options.length; i++){
        arrLookup[MenuDestino.options[i].text] = MenuDestino.options[i].value;
        arrMenuDestino[i] = MenuDestino.options[i].text;
    }
    var fLength = 0;
    var tLength = arrMenuDestino.length;
    for(i = 0; i < MenuOrigem.options.length; i++){
        arrLookup[MenuOrigem.options[i].text] = MenuOrigem.options[i].value;
        if (MenuOrigem.options[i].selected && MenuOrigem.options[i].value != ""){
            arrMenuDestino[tLength] = MenuOrigem.options[i].text;
            tLength++;
        }
        else{
            arrMenuOrigem[fLength] = MenuOrigem.options[i].text;
            fLength++;
        }
    }
    arrMenuOrigem.sort();
    arrMenuDestino.sort();
    MenuOrigem.length = 0;
    MenuDestino.length = 0;
    var c;
    for(c = 0; c < arrMenuOrigem.length; c++){
        var no = new Option();
        no.value = arrLookup[arrMenuOrigem[c]];
        no.text = arrMenuOrigem[c];
        MenuOrigem[c] = no;
    }
    for(c = 0; c < arrMenuDestino.length; c++){
        var no = new Option();
        no.value = arrLookup[arrMenuDestino[c]];
        no.text = arrMenuDestino[c];
        MenuDestino[c] = no;
   }
}
</script>

<html>
<head>
<title>Movendo itens de um select para o outro</title>
</head>
<body>
<form name="combo_box">
    <table>
        <tr>
            <td>
                <select multiple size="10" name="list1" style="width:150">
                <option value="1">Acre</option>
                <option value="2">Alagoas</option>
                <option value="3">Amapá</option>
                <option value="4">Amazonas</option>
                <option value="5">Bahia</option>
                <option value="6">Ceará</option>
                <option value="7">Distrito Federal</option>
                <option value="8">Espírito Santo</option>
                <option value="9">Goiás</option>
                <option value="10">Maranhão</option>
                <option value="11">Mato Grosso</option>
                <option value="12">Mato Grosso do Sul</option>
                <option value="13">Minas Gerais</option>
                <option value="14">Pará</option>
                <option value="15">Paraíba</option>
                <option value="16">Paraná</option>
                <option value="17">Pernambuco</option>
                <option value="18">Piauí</option>
                <option value="19">Rio de Janeiro</option>
                <option value="20">Rio Grande do Norte</option>
                <option value="21">Rio Grande do Sul</option>
                <option value="22">Rondônia</option>
                <option value="23">Roraima</option>
                <option value="24">Santa Catarina</option>
                <option value="25">São Paulo</option>
                <option value="26">Sergipe</option>
                <option value="27">Tocantins</option>
                </select>
            </td>
            <td align="center" valign="middle">
                <input type="button" onClick="move(this.form.list2,this.form.list1)" value="<<">
                <input type="button" onClick="move(this.form.list1,this.form.list2)" value=">>">
            </td>
            <td>
                <select multiple size="10" name="list2" style="width:150">
                </select>
            </td>
        </tr>
    </table>
</form>
</body>
</html>

A partir deste exemplo retirado da net apliquei ao meu problema, apesar de funcionar correctamente não sei como utlizar os dados que passo para a list2, ou seja eu queria que os dados passados para a list2 pudesse usar como array mas so consigo apresentar o ultimo inserido. Já tentei com "list2[]" no entanto assim não funciona. Alguma sugestão?
pedrolm
Membro de Prata
Membro de Prata
 
Mensagens: 103
Registado: Quarta Mai 11, 2005 17:51

Mensagempor pedrolm » Quarta Set 05, 2007 13:16

Obrigado pessoal mas já encontrei a resposta ao problema. Para se aceder a todos os adicionados a list2 basta utilizar name="list2[]", assim a função javascript fica a não funcionar, para que o faça basta:

<select multiple size="10" name="list2[]" id="lista2"style="width:150">
</select>

e depois usar o id em vez do name:
<input type="button" onClick="move(this.form.lista2,this.form.list1)" value="<<">
<input type="button" onClick="move(this.form.list1,this.form.lista2)" value=">>">
pedrolm
Membro de Prata
Membro de Prata
 
Mensagens: 103
Registado: Quarta Mai 11, 2005 17:51

Mensagempor CoolMaster » Quarta Set 05, 2007 13:46

Penso que dessa forma só funciona no IE, isto é, usares o id do elemento da forma document.ID_DO_ELEMENTO .

É mais seguro usar o getElementById() , aí há certezas que funciona em todos os browsers.
CoolMaster
Membro de Prata
Membro de Prata
 
Mensagens: 137
Registado: Segunda Dez 25, 2006 0:54
Localização: Porto

Mensagempor Fenrir » Segunda Set 10, 2007 8:55

Realmente julgo que seria mais simples e seguro usar o HTML DOM. Se não me engano é a forma standard do W3C.
Avatar do Utilizador
Fenrir
Membro de Prata
Membro de Prata
 
Mensagens: 354
Registado: Segunda Set 20, 2004 22:33
Localização: Porto


Voltar para Programação

Quem está ligado:

Utilizador a ver este Fórum: Nenhum utilizador registado e 1 visitante

cron