Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

Mudar foco de uma combo select com jquery

Estou tentando criar um controle para quando usuário clicar no botão a opção selecionada fique desabilitada e mude o foco para próxima linha mas já tentei de varias formas e sempre que clico no botão ele mantem o foco na linha que eu selecionei, mesmo ela já estando com disable.

a função do js como está agora:

function habilitaOpcao(data) {

    if (data.ativo == false) {

        $("#Categoria option:selected").addClass("inativo").attr('disabled',
                'disable');

    } else {
        $("#Categoria option:selected").addClass("ativo")
                .removeAttr('disabled');

    }
}
8 respostas

Oi Diego, acho que num select, para vc colocar o foco numa opção, vc precisa setar o value do select para ele.

como vou fazer isso se meu select é dinamico? ontem testei no crome e funcionou normal ele perde o foco quando clico no botão, mas no firefox ele fica marcada a opção ainda.

<select class="form-control" id="Categoria" name="CmbCategoria"
                            size="9">
                            <option value="0" disabled="disabled">---Selecione
                                Categoria---</option>

                            <c:forEach items="${categorias}" var="categoria">
                                <c:choose>
                                    <c:when test="${categoria.ativo==false}">
                                        <option class="inativo" disabled="disabled"
                                            value="${categoria.cod_categoria}">${categoria.categoria}</option>
                                    </c:when>
                                    <c:otherwise>
                                        <option class="ativo" value="${categoria.cod_categoria}">${categoria.categoria}</option>
                                    </c:otherwise>
                                </c:choose>

                            </c:forEach>
                        </select>

depois que a pessoa escolhe a opção que deve ficar inativa, vc procura pela próxima option do select e marca ela como selected. Pensei assim...

eu criei um novo metodo que me ajudou nisso mas cai em outro ponto. porque o sistema terá varios usuarios que vao usar essa mesma lista para adicionar para seus logins, so que quando eu adiciono para um usuario preciso que aquela lista atualize imediatamente para todos usuarios, fiz com location.reload mas fica ruim dar refresh toda hora, tem ideia como posso fazer isso?

fiz o metodo assim para polular apos adicionar

function carregaCategoria() {

    $.ajax({
        type : 'GET',
        url : '/Preconizado/departamento/addcombo',

        crossDomain : true,    
        contentType : "application/json; charset=utf-8",
        dataType : "json",

        success : function(data) {
            var dados = data;

            $("#Categoria").empty();
            for (var i = 0; i < dados.length; i++) {
                if (dados[i].ativo == false) {
                    $("#Categoria").append($('<option>', {

                        value : dados[i].cod_categoria,
                        text : dados[i].categoria
                    }).addClass("inativo").attr('disabled', 'disable'));
                } else {
                    $("#Categoria").append($('<option>', {

                        value : dados[i].cod_categoria,
                        text : dados[i].categoria
                    }).addClass("ativo").removeAttr('disabled'));

                }

            }

        },
        error : function(data) {
            console.log("erro na funçao");
        }

    });
}
solução!

Vixe, aí é o típico caso dos websockets. Vc quer um comportamento com um whatsapp web da vida.. Vc manda uma mensagem no grupo, todo mundo ali no grupo recebe. Não sei se ainda está usando o Spring, se estiver, segue a documentação => http://docs.spring.io/spring/docs/current/spring-framework-reference/html/websocket.html

então e só um sistema de controle de usuários que estou fazendo, e estou usando spring sim, mas como sou iniciante ainda não conheço recursos necessários, mas vou dar uma olhada nesse link, eu consegui fazer outra maneira com js mesmo para não deixar o usuário gravar duas vezes a mesma informação, por enquanto vou usar assim, obrigado.

Ah, outra coisa Diego. Logo logo eu vou fazer um post no domineospring.wordpress.com sobre esse lance do controle de usuários, fica ligado lá :).

vou ficar de olho sim pode deixar :)