Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Matias Rezende

[Resolvido] Readonly para select

Recommended Posts

Fala galera

 

Estou precisando de uma ajuda. Existe alguma opção do select no estilo do readonly? Quando uso o disabled, o valor selecionado neste select não é enviado junto com o form. Na verdade, o que eu preciso é que o valor venha selecionado (já está feito, em PHP), e que o usuário não consiga alterar, mas que quando for postado o formulário, ele envie o valor.

 

Alguém pode me ajudar?

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao faz sentido

 

se nao pode mudar porque usaria select?

 

no caso do readonly para type text é aceitavel pois desejamos passar um valor e o usuario nao poderá alterar se for assim use text nao select

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depende do caso... já vi um sistema, em que o programador posicionou uma DIV com uma cor meio transparente por cima do select.

Jogou um absolute, ai o select não era clicável..

 

Puxa, eu nunca testei o submit de inputs disableds... Sério que não funciona? :mellow:

Sim, funcionam. Eles enviam o value normalmente

Compartilhar este post


Link para o post
Compartilhar em outros sites

disabled acho que nao passa valor so o readonly

 

mas é bom testar que faz tempo que nao uso um ou outro

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, funcionam. Eles enviam o value normalmente

Mas o matias_rezende disse no seu primeiro post que o valor não vai junto quando o form é submetido... :blink: Diante disso fui verificar. Realmente, o matias_rezende está certo, valores de inputs com o atributo disabled="disabled" não são enviados...

 

Já o atributo readonly="readonly" sim, funciona normalmente, mas o porém é que esse atributo não pode ser aplicado a <select>...

 

 

Bom, diante disso, meu caro matias_rezende, você tem duas opções:

 

1) Quando seu select estiver desabilitado, faça como o Mário Monteiro falou, substitua o <select> por um <input> com o atributo readonly="readonly"...

 

2) Ou então, faça como o William Bruno sugeriu, crie uma <div> por cima do select que não permitiria a seleção do <select> que estaria por baixo...

 

 

Na minha opinião, eu acho que você deveria fazer como o Mário Monteiro sugeriu... http://forum.imasters.com.br/public/style_emoticons/default/closedeyes.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ops.. desculpa.

Confundi. O readonly que envia.. é que nunca usei disabled..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera

 

Não tinha pensado em, quando o usuário não puder mudar, mandar o valor via input com readonly. Gostei da idéia. Vou fazer assim.

 

Obrigado pela ajuda.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom Dia a Todos
Eu me deparei com este problema e realmente me estressei pra caramba,até descobrir que quando vc desabilita um campo o valor dele não é passado....
para isto eu simplesmente habilitei o campo antes de qualquer inserção ou edição,isto por verificação via Javascript, e funcionou
espero ter ajudado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Criei uma DIV e coloco logo acima do SELECT
<div id='maskZone' style='width:200px; height:25px; position:absolute;>

<select name="zone_id" id="zone_id"></select>
Dessa forma o botão não é clicavel.
Para clicar esconde o DIV
$('#maskZone').hide();
Não clicar, mostre o DIV
$('#maskZone').show();
Gambeta mítica.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode também mudar dinamicamente as opções do select para que ele exiba apenas a opção que você quer pois com uma opção apenas não tem como mudar!

 

com jquery:

 

$('#idDoSelect').html("<option value='f'>Feminino</option>");

 

com JS puro:

 

document.getElementById(idDoSelect).innerHTML="<option value='f'>Feminino</option>";

 

Assim você continua com um select, não precisa de gambiarra e o usuário fica impossibilitado de modificar!

 

Espero que ajude alguém!

 

:clap:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, também passei pelo mesmo problema e encontrei a solução. 

 

Basta realizar (em javascript) "document.forms['formUsers'].id.setAttribute('readonly',true); " para bloquear, de acordo com sua necessidade. E "document.forms['formUsers'].id.removeAttribute('readonly'); " para desfazer. 

 

Teste e depois comente aqui. 

 

Abs 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compartilho aqui uma solução pra quem ainda precisar!
Crie um input hidden com o valor que você quer passar.
Com on change, popula o value do input hidden e da o disable no select.
Na query, usa o value do input hidden que você enviou no formulario.

 

Exemplo: (Caso eu queira bloquear um select assim q digitar o cep em um campo com resultados de um ajax)

//Campos do formulário

<input type="hidden" name="estado" id="estado" type="text" value="" >

<input name="cep" id="cep" type="text">

<select name="estadoSelect" id="estadoSelect">
                 <option value="">Selecione</option>

</selecy>



$(document).ready(function () {
$('#cep').change(function () { 

    $('#estadoSelect ').val(RetornoAjax); //Preenchendo o valor com um retorno de uma função



    $('#estado').val($('#estadoSelect option:selected').text()); //Se quiser pegar o index do select

    $('#estado').val($('#estadoSelect').val()); //Se quiser pegar o value do select

   

    $('#estadoSelect').prop("disabled", false); //Desativando o select.


        });
});

 

 

Crie rotinas para desativa-lo quando precisar.

         
       

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.