none
Não reconhece o elemento como null RRS feed

  • Pergunta

  • Boa noite. Na index tenho um metodo que é carregado sempre que uma opção no dropDown é alterada, a função é que altere as urls a serem acessadas dependendo da escolha do usuário. Para carregar os links selecionados anteriormente sempre que a pagina atualizar executo uma função no javascript. O problema é que ela não ta reconhecendo o elemento como null, de uma forma que não consigo compreender.

     <div id="dadosFornecedor">
                @if (ViewBag.CurrentFornecedor != null)
                {
                    <fieldset>
                        <legend>@ViewBag.CurrentFornecedor.RazaoSocial</legend>
                        <b>Razão Social:</b> @ViewBag.CurrentFornecedor.RazaoSocial <b>Endereço:</b> @ViewBag.CurrentFornecedor.Endereco
                        @Html.Hidden("idFornecedor", new { IdFornecedor = ViewBag.CurrentFornecedor.IdFornecedor })
                        <input type="button" class="btn" onclick="removerFornecedor();" value="Remover Fornecedor" />
                        <br />
                        <br />
                    </fieldset>
                    <br />
                    
                }
            </div>

    Nesse momento eu verifico se existe algum valor na viewBag, se existir um fornecedor então ele cria o campo, mas como ao entrar na página não existe nenhum fornecedor carregado, esse campo não é inserido.

    function alteraFiltro() {
            var urlCodigo = $("#linkCodigo");
            var urlLancamento = $("#linkLancamento");
            var urlPagamento = $("#linkPagamento");
            var urlFornecedor = $("#linkFornecedor")
            var dropValue = $("#tipoPesquisa").val();
            var hidden = $("#idFornecedor");
    
            if (hidden.val() == "" || hidden.val() == null || hidden == null) {
                urlCodigo.attr("href", "saidasDiversas?sortOrder=@ViewBag.CodigoSortParm&currentFilter=@ViewBag.CurrentFilter&currentDrop=" + dropValue + "");
                urlLancamento.attr("href", "saidasDiversas?sortOrder=@ViewBag.DataLancamentoSortParm&currentFilter=@ViewBag.CurrentFilter&currentDrop=" + dropValue + "");
                urlPagamento.attr("href", "saidasDiversas?sortOrder=@ViewBag.DataPagamentoSortParm&currentFilter=@ViewBag.CurrentFilter&currentDrop=" + dropValue + "");
                urlFornecedor.attr("href", "saidasDiversas?sortOrder=@ViewBag.FornecedorSortParm&currentFilter=@ViewBag.CurrentFilter&currentDrop=" + dropValue + "")
            } else{
                urlCodigo.attr("href", "saidasDiversas?sortOrder=@ViewBag.CodigoSortParm&idFornecedor=@ViewBag.CurrentFornecedor.IdFornecedor&currentFilter=@ViewBag.CurrentFilter&currentDrop=" + dropValue + "");
                urlLancamento.attr("href", "saidasDiversas?sortOrder=@ViewBag.DataLancamentoSortParm&idFornecedor=@ViewBag.CurrentFornecedor.IdFornecedor&currentFilter=@ViewBag.CurrentFilter&currentDrop=" + dropValue + "");
                urlPagamento.attr("href", "saidasDiversas?sortOrder=@ViewBag.DataPagamentoSortParm&idFornecedor=@ViewBag.CurrentFornecedor.IdFornecedor&currentFilter=@ViewBag.CurrentFilter&currentDrop=" + dropValue + "");
                urlFornecedor.attr("href", "saidasDiversas?sortOrder=@ViewBag.FornecedorSortParm&idFornecedor=@ViewBag.CurrentFornecedor.IdFornecedor&currentFilter=@ViewBag.CurrentFilter&currentDrop=" + dropValue + "")
            }
            
        }

    O código verifica se existe um id de fornecedor, como esse id não existe quando a página é acessada pela primeira vez, ele deveria não renderizar as urls com o fornecedor, mas não sei como ele sempre entra no else.

    Não compreendo de forma alguma isso... Se puderem me ajudar por favor.

    sábado, 17 de novembro de 2012 05:01

Todas as Respostas

  • Repare que o JQuery não retorna null quando um campo não existe, mas sim retorna um array vazio, portanto seu if não vai funcionar.

    Tenta fazer assim:

    var hidden = $("#idFornecedor");// se o elemento não existir, 'hidden' será igual a [], ou seja, um array vazio 
    
    if (hidden.length) {

    http://www.linkedin.com/pub/murilo-kunze/44/191/455


    • Editado Murilo Kunze sábado, 17 de novembro de 2012 12:37
    sábado, 17 de novembro de 2012 12:36
  • Obrigado pela colaboração! Mas não deu certo.

    Na verdade ja fiz até 

    if(hidden.length){
    ...
    }
    
    if(hidden.length == 0){
    ...
    }
    
    hidden.remove();
    ...
    

    E nada faz o jquery não ir parar no else. Muito estranho oO. Tentei tambem a função $.isEmptyObject() e não deu efeito.

    sábado, 17 de novembro de 2012 16:36
  • O mais absurdo é que, inverti a posição dos códigos, coloquei as 4 linhas que estavam no else no if, e as 4 que estavam no if coloquei no else, e ai sempre renderiza o trecho com problemas.
    sábado, 17 de novembro de 2012 16:40