Ir para conteúdo
Fórum Script Brasil
  • 0

Validar select multiple - sem selecionar


jgd

Pergunta

Pessoal,

Preciso validar campo <select multiple>

Tenho 2 select multiple : list1 e list2

O usuário moverá os itens desejados do list1 para o list2.

-Esta função consegui adaptar conforme abaixo.

Preciso agora é validar o list2...

Tem que exisitir pelo menos uma opção <option> dentro do list2.

Obs: O elemento não precisa e não estará selecionado pelo usuário.

Existe algum forma de efetuar esta validação???

Código: JavaScript

<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>
Código Html
<html>
<head>
<title>Escolhas</title>
</head>
<body>
<FORM name="form" method="POST" action="txtMult.html" onSubmit='return valida();'>
    <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="7">Distrito Federal</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>
    <input type="submit" name="gravar">

</form>
</body>
</html>

Agradeço Qualquer Ajuda...

JGD

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Horas a parte mais díficil você já "fez" (esse é um código pronto :P) que era trasnportar um valor de um campo para outro ... a parte de válida o combo dois é a mais simples bastante seguir o que já fez até agora ... no seu caso basta colocar uma função 'valida' que conte quantos 'options' existe no 'list2' e esta tudo certo ...

function valida() {
 var total_compo = document.forms.form.list2.options.length;

 if (total_compo == 0) {
  alert("Selecione ao mínimo um valor no Combo!");
  return false;
 }

 return true;
}

Mas assim, se mandar para alguma linguagem dinâmica ela não ira conseguir 'capturar' os dados pois ela só consegue ler os options selecionados ... tera que fazer uma mascará com hidden por exemplo dentro do JS para enviar ...

Editado por SK15
Link para o comentário
Compartilhar em outros sites

  • 0

SK15,

Você tinha razão.... Não há como pegar nenhum evento no neste arranjo. Preciso pegar os valores para mandar para php/mysql.

Tentei algo assim... que rola com checkbox... Mas também não rolou...

function contaCheckbox7(selecionados){
var string="";
var string2="";
//var opcao = document.form.fez_uso_medicam_out.value;
  var inputs, x, selecionados=0;
  inputs = document.getElementsByTagName('input');
  for(x=0;x<inputs.length;x++){
    if(inputs[x].type=='checkbox'){
      if(inputs[x].checked==true && inputs[x].id == 'naoreal'){
        string = string + inputs[x].value +"|"
        if (inputs[x].value==10){
        document.form.outro8.value="S";
        }else{
        document.form.outro8.value="N";
        //document.form.NaoRealMoti10Qual.value="";
        }
        //document.form.outro8.value="N";
        selecionados++;
      }
    }
  }

He he he Qual seria o caminho das pedras para detectar os valores clicados no list1 acima???

JGD

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...