Inquiridor
Não reconhece o elemento como null

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¤tFilter=@ViewBag.CurrentFilter¤tDrop=" + dropValue + ""); urlLancamento.attr("href", "saidasDiversas?sortOrder=@ViewBag.DataLancamentoSortParm¤tFilter=@ViewBag.CurrentFilter¤tDrop=" + dropValue + ""); urlPagamento.attr("href", "saidasDiversas?sortOrder=@ViewBag.DataPagamentoSortParm¤tFilter=@ViewBag.CurrentFilter¤tDrop=" + dropValue + ""); urlFornecedor.attr("href", "saidasDiversas?sortOrder=@ViewBag.FornecedorSortParm¤tFilter=@ViewBag.CurrentFilter¤tDrop=" + dropValue + "") } else{ urlCodigo.attr("href", "saidasDiversas?sortOrder=@ViewBag.CodigoSortParm&idFornecedor=@ViewBag.CurrentFornecedor.IdFornecedor¤tFilter=@ViewBag.CurrentFilter¤tDrop=" + dropValue + ""); urlLancamento.attr("href", "saidasDiversas?sortOrder=@ViewBag.DataLancamentoSortParm&idFornecedor=@ViewBag.CurrentFornecedor.IdFornecedor¤tFilter=@ViewBag.CurrentFilter¤tDrop=" + dropValue + ""); urlPagamento.attr("href", "saidasDiversas?sortOrder=@ViewBag.DataPagamentoSortParm&idFornecedor=@ViewBag.CurrentFornecedor.IdFornecedor¤tFilter=@ViewBag.CurrentFilter¤tDrop=" + dropValue + ""); urlFornecedor.attr("href", "saidasDiversas?sortOrder=@ViewBag.FornecedorSortParm&idFornecedor=@ViewBag.CurrentFornecedor.IdFornecedor¤tFilter=@ViewBag.CurrentFilter¤tDrop=" + 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.
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
-
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.
-