1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Evento click e keydown

Fala galera, estou fazendo uma tarefa aqui no trabalho, estava tendo um certo problema pra conseguir fazer um autocomplete funcionar, mas finalmente consegui. Só que com isso surgiu um outro problema, esse autocomplete é um filtro de uma busca, quando coloquei o keypress para o autocomplete funcionar, o evento click do botão parou. Se tirar o keypress, o botão volta a funcionar. Sabem o que pode ser?

/**
 * @brief Controlador da aplicação
 */
(function($) {
    $.fn.controleAcessoWindow = function() {

        var $this = $(this);

        var funcionalidade;

        var form;

        var container = $("#FormControle").Dialog({
            floating : false,
            close : false,
            minimize : false
        });
        var items = new Items();

        container.show();
        function createForm(options) {
            var divForm = $this.find("#" + options.id);
            return FormGenerator($.extend(options, {
                containerForm : divForm
            }));

        }

        function getContainer() {

            return container;
        }

        /**
         * @fn createDatalist
         * @param object
         *            options
         * @brief Cria uma datalist
         */

        function createDatalist(options) {
            var datalist = $this.Datalist(options);
            // datalist.render();
            return datalist;
        }

        function modalAuditoria(idAudit) {
            container
                    .getBody()
                    .append(
                            "<div id='modal'class='wait' style='display:block;'></div><div id='modal-content'></div><div id='modal-close'>X</div>");
            container.getBody().find("#modal-close").click(function() {
                container.getBody().find("#modal").remove();
                container.getBody().find("#modal-content").remove();
                container.getBody().find("#modal-close").remove();
            });
            container.getBody().find("#modal-content").load(
                    'auditoria/detalhelayout?idAuditoriaHstco=' + idAudit);
        }

        function comparaDatasAuditoria(datainicial, datafinal) {
            if (datainicial == '' || datafinal == '')
                return true;

            var nvDtIn = datainicial.split("/"), nvDtFn = datafinal.split("/");

            if (parseInt(nvDtIn[2].toString() + nvDtIn[1].toString()
                    + nvDtIn[0].toString()) > parseInt(nvDtFn[2].toString()
                    + nvDtFn[1].toString() + nvDtFn[0].toString())) {
                return false;

            }
            return true;
        }

        /**
         * @fn listaAuditoria
         * @brief Gera a lista de modificações
         */
        function listaAuditoria() {
            $
                    .siopAjax({
                        url : "auditoria/listlayout",
                        success : function(data) {
                            container.setBody(data);
                            var datainicial = container.getBody().find(
                                    "#datainicial").InputText(FormField({
                                id : 'datainicial',
                                type : "text|date",
                                completeId : 'datainicial'
                            }));
                            datainicial.render();

                            var datafinal = container.getBody().find(
                                    "#datafinal").InputText(FormField({
                                id : 'datafinal',
                                type : "text|date",
                                completeId : 'datafinal'
                            }));
                            datafinal.render();

                            // Login
                            $
                                    .siopGetJSON(
                                            '/SIOpWeb/user/listUsersOrderByUsuario',
                                            {
                                                'model.codSituacao' : 'AT'
                                            },
                                            function(retorno) {
                                                container
                                                        .getBody()
                                                        .find("#usuario")
                                                        .append(
                                                                "<option value=''>Selecione</option>");

                                                for ( var i in retorno.list) {
                                                    container
                                                            .getBody()
                                                            .find("#usuario")
                                                            .append(
                                                                    "<option value='"
                                                                            + retorno.list[i].idUsuario
                                                                            + "'>"
                                                                            + retorno.list[i].nomLogin
                                                                            + "</option>");
                                                }
                                            });

                            // validador
                            $
                                    .siopGetJSON(
                                            '/SIOpWeb/user/listarValidadores',

                                            function(retornoValidador) {
                                                container
                                                        .getBody()
                                                        .find("#validador")
                                                        .append(
                                                                "<option value=''>Selecione</option>");

                                                for ( var i in retornoValidador.listValidador) {
                                                    container
                                                            .getBody()
                                                            .find("#validador")
                                                            .append(
                                                                    "<option value='"
                                                                            + retornoValidador.listValidador[i].idUsuario
                                                                            + "'>"
                                                                            + retornoValidador.listValidador[i].nomLogin
                                                                            + "</option>");
                                                }
                                            });

                            // perfil
                            $
                                    .siopGetJSON(
                                            '/SIOpWeb/profile/list',

                                            function(retornoPerfil) {
                                                container
                                                        .getBody()
                                                        .find("#perfil")
                                                        .append(
                                                                "<option value=''>Selecione</option>");

                                                for ( var i in retornoPerfil.list) {
                                                    container
                                                            .getBody()
                                                            .find("#perfil")
                                                            .append(
                                                                    "<option value='"
                                                                            + retornoPerfil.list[i].idPerfil
                                                                            + "'>"
                                                                            + retornoPerfil.list[i].nomPerfil
                                                                            + "</option>");
                                                }
                                            });

                            // validado
                            container
                                    .getBody()
                                    .find("#indRegistroValidado")
                                    .append(
                                            "<option value=''>Selecione</option>");
                            container.getBody().find("#indRegistroValidado")
                                    .append("<option value=true>Sim</option>");
                            container.getBody().find("#indRegistroValidado")
                                    .append("<option value=false>Não</option>");

                            // módulo
                            container.getBody().find("#modulo").append(
                                    "<option value=''>Selecione</option>");
                            container.getBody().find("#modulo").append(
                                    "<option value='ANALISE'>Análise</option>");
                            container
                                    .getBody()
                                    .find("#modulo")
                                    .append(
                                            "<option value='ACESSO'>Controle de Acesso</option>");
                            container
                                    .getBody()
                                    .find("#modulo")
                                    .append(
                                            "<option value='GD'>Gerência de Dados</option>");
                            container.getBody().find("#modulo").append(
                                    "<option value='SISINT'>Sisint</option>");

                            // operação
                            container.getBody().find("#codAcao").append(
                                    "<option value=''>Selecione</option>");
                            container.getBody().find("#codAcao").append(
                                    "<option value='I'>Inclusão</option>");
                            container.getBody().find("#codAcao").append(
                                    "<option value='E'>Edição</option>");
                            container.getBody().find("#codAcao").append(
                                    "<option value='D'>Exclusão</option>");

                            // autocomplete do item
                            var objDTOList = null;
                            $.siopGetJSON('/SIOpWeb/auditoria/findObjItemJSON',
                                    function(retorno) {
                                        objDTOList = retorno.objDTOList;
                                    });
                            container.getBody.find($("#itemAutoComplete").keydown(
                                    function() {
                                        $("#itemAutoComplete").autocomplete({
                                            source : objDTOList,
                                            minLength : 3,
                                            focus : function(event,ui) {
                                                $("#itemAutoComplete").val(ui.item.label);
                                                return false;
                                                },
                                                select : function(event,ui) {
                                                    $("#itemAutoComplete").val(ui.item.label);
                                                    $("#itemAutoCompleteHidden").val(ui.item.id);
                                                    return false;
                                                }
                                            });
                                }));

                            // dataList
                            var datalist = createDatalist({
                                zebra : [ "LWrite", "" ],
                                pk : [ 'idAuditoriaHstco', 'codCategoriaSiop',
                                        'idObjeto', 'nomTipoDcmtoIntia',
                                        'idTipoDocumento' ],
                                lineButtons : {
                                    'show' : {
                                        click : function(pks) {
                                            window
                                                    .open('/SIOpWeb/auditoriaDetails?idObjeto='
                                                            + pks['idObjeto']
                                                            + '&model.idAuditoriaHstco='
                                                            + pks['idAuditoriaHstco']
                                                            + "&idTipoDocumento="
                                                            + (pks['idTipoDocumento'] || 0));
                                        }
                                    }
                                },
                                emptyList : "<tr><td colspan='6'>"
                                        + Msg.get('map.noresultfound')
                                        + "</td></tr>",
                                paginate : true,
                                url : "auditoria",
                                prop : "auditHistList",
                                propertys : {
                                    'model.idUsuarioRegistro' : 0,
                                    'model.dataInicio' : '',
                                    'model.dataFim' : ''
                                },
                                resultsByPage : 20
                            });

                            // botao filtro
                            container
                                    .getBody()
                                    .find(".btnFiltro")
                                    .click(
                                            function() {
                                                if (!datainicial.check()[0]) {
                                                    warning(Msg
                                                            .get('ctrlaccss.dtin_invalida'));
                                                } else if (!datafinal.check()[0]) {
                                                    warning(Msg
                                                            .get('ctrlaccss.dtfn_invalida'));
                                                } else if (!comparaDatasAuditoria(
                                                        datainicial.getVal(),
                                                        datafinal.getVal())) {
                                                    warning(Msg
                                                            .get('ctrlaccss.dtfn_dtin_invalida'));
                                                } else {
                                                    datalist
                                                            .setSettings({
                                                                propertys : {
                                                                    'model.idUsuarioRegistro' : container
                                                                            .getBody()
                                                                            .find(
                                                                                    "#usuario")
                                                                            .val(),
                                                                    'model.idUsuarioValidacao' : container
                                                                            .getBody()
                                                                            .find(
                                                                                    "#validador")
                                                                            .val(),
                                                                    'model.perfil' : container
                                                                            .getBody()
                                                                            .find(
                                                                                    "#perfil")
                                                                            .val(),

                                                                    'model.modulo' : container
                                                                            .getBody()
                                                                            .find(
                                                                                    "#modulo")
                                                                            .val(),
                                                                    'model.codAcao' : container
                                                                            .getBody()
                                                                            .find(
                                                                                    "#codAcao")
                                                                            .val(),
                                                                    'model.indRegistroValidado' : container
                                                                            .getBody()
                                                                            .find(
                                                                                    "#indRegistroValidado")
                                                                            .val(),
                                                                    'model.dataInicio' : datainicial
                                                                            .getVal(),
                                                                    'model.dataFim' : datafinal
                                                                            .getVal()
                                                                }
                                                            });
                                                    datalist.setPage(1);
                                                    datalist.render();

                                                }

                                            });

                        }
                    });
        }

        // eventos do menu

        $("#listaAuditoria").click(function() {
            listaAuditoria();
        });

        var __init = function() {
            funcionalidade = location.hash.substr(1);

            listaAuditoria();

        }();

    };

})(jQuery);
  • Ola @leods acho melhor colocar o código de como está tentando fazer!

    Mickdark   21 de jul de 2014
  • ali em // autocomplete do item, é onde faço o auto complete. Com ele, o " container .getBody() .find(".btnFiltro") .click" não funciona mais, é como se estivesse desabilitado.

    leods   21 de jul de 2014
  • Eu acho que entendi o que está acontecendo, o autocomplete fica instanciado nos eventos do JQuery quando vc faz $("#itemAutoComplete").autocomplete(); e para ele instanciar é preciso apertar alguma tecla dentro do elemento #itemAutocomplete, provavelmente ele está instanciando novamente e zerando os dados do campo toda vez que é digitado algo, acho que no seu caso seria muito mais facil utilizar jsonp do JQuery UI, link exemplo

    Mickdark   21 de jul de 2014
  • Po, mas no meu caso dá o erro sem eu nem mesmo digitar algo. Só eu eu carregar a tela, escolher algum outro filtro, sem ser esse autocomplete, o botão de filtrar não funciona. Só funciona se eu tirar o autocomplete do js.

    leods   21 de jul de 2014
  • o problema é que esse js ta funcionando só por evento. Então tive que usar o keydown pra ele reconhecer que estava digitando. Se eu colocar o autocomplete direto, não funciona.

    leods   21 de jul de 2014
Mostrar todos os 8 comentários>
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java script ou faça a sua própria pergunta.