[ASP.NET MVC 3] Script funciona na página Create, mas não na página Edit

4 respostas
Nicolas_Fernandes

E aí, galerinha do GUJ!
Tudo bem com vocês?

Tenho um script que roda uma pesquisa AJAX de cidades através de um CEP especificado:
<input type="text" id="cep" name="cep" />
<select id="cidades" name="cidades" />

<script type="text/javascript">

    $(document).ready(function() {

    $('#cep').blur(function() {
    var cep = {
        'cep': $('#cep').val()
    };

    $.get(
        'controller/PesquisarMunicipiosPeloCEP',
                cep,
                function (municipios) {
                    var options = '';
                    for (var i = 0; i < municipios.length; i++) {
                        options += '<option value="' + municipios[i].ID + '">' + municipios[i].Nome + '</option>';
                    }
                    $("#cidades").html(options);
                    $('#cidades').val(municipio.ID);
                }
            );
    }
}
</script>
Quando eu chamo uma página Create, ele roda bonitinho:
//
// GET: /Inscricao/
public ActionResult Index()
{
    ViewBag.InscricaoID = string.Empty;
    return View();
}
Agora, quando eu chamo uma página Edit, ele não funciona:
//
// GET: /Editar/{inscricaoID}
public ActionResult Editar(long inscricaoID)
{
    ViewBag.InscricaoID = inscricaoID;
    return View();
}

Eu criei os itens da página como uma PartialView. Minhas duas páginas - Create e Edit - são idênticas, exceto pelo fato de que na página Edit eu preencho um HiddenField com o valor da variável dinâmica InscricaoID. Na página Create, o AJAX roda bonitinho, mas na Edit não. Porque será?

Obrigado pela ajuda,
fiquem com Deus! :D

4 Respostas

doravan

Este problema não é do Asp.Net, mas sim do próprio AJAX.

Uma vez que um script rode no document.ready, ele só irá executar a primeira vez que a página for carregada.
Se algum elemento da página for modificado via Ajax, os elementos não estarão mais disponíveis no escopo do Jquery.
Sugiro que encapsule as funções do document.ready, e acople na lógica de carregamento ajax.
Assim seus elementos funcionarão.

d34d_d3v1l

Cara,
eu só estou curioso…

De onde vem o valor de:

MUNICIPIO.ID ? :smiley:

valeu cara…

Nicolas_Fernandes

Opa, falha minha!
Na verdade, isso faz parte de um script que suprimi. Ignorem essa parte, por favor! :stuck_out_tongue:

kerollensoares
Pessoal to com o mesmo problema...só que não sei como encapsular pra funcionar... Ja tentei dessa forma:
jQuery(document).ready(function() {

// conteudo do jQuery

});
E dessa:
(function($){

// conteudo do jQuery

})(jQuery);
e ainda dessa:
window.onload = function() { 

...script aqui... 

}

Alerts e chamadas de função funcionam normalmente, o que não funciona sao appends, changes.

Criado 10 de outubro de 2012
Ultima resposta 20 de mai. de 2013
Respostas 4
Participantes 4