Não consigo atualizar objeto após recuperar

1 resposta
javascript
Dayson_Rodrigues

olá galera bom, estou pesquisando um objeto na minha tabela mais não consigo editar o objeto filtrado clicando na na minha img

OBS: Quando busco todos os elementos por padrão quando carrego a pagina, eu já consigo recuperar e após editar. Segue meu codigo.

RESUMINDO Após filtrar o objeto não consigo editar o mesmo

meu JS

$(function() {
	var posicao_selecionada = -1;
	var CRIA_CONTATO = "NOVO_CONTATO"
	var tipoCadastro = CRIA_CONTATO;
	
	function pegaTodosJson(){
		return localStorage.getItem('contato');
	}

	function devolveContatos(){
		var contatos = pegaTodosJson();
		contatos = JSON.parse(contatos);
		if(contatos == null){
			return contatos =[];
		}else{
			return contatos;
		}
	}
	
	function criaObjetoJson(){

		var contato = JSON.stringify({
			"codigo" : $("#campo-id").val(),
			"nome" : $("#campo-nome").val(),
			"email" : $("#campo-email").val(),
			"endereco" : $("#campo-endereco").val(),
			"telefone_fixo" : $("#campo-telefone-Fixo").val(),
			"telefone_celular" : $("#campo-celular").val()
		});

		return contato;
	}

	function recuperaContato(){	

	}

	function montaColuna(){ 
		$("#tableContato").html("");
		$("#tableContato").html(`
			<thead>
			<tr>                
			<th>Codigo</th>
			<th>Nome</th>
			<th>Email</th>
			<th>Endereco</th>
			<th>Telefone Fixo</th>
			<th>Telefone Celular</th>
			<th>Editar</th>
			<th>Excluir</th>
			</tr>                
			</thead>
			<tbody>
			</tbody>
			`); 
	}

	
	function salvaLocalStorage(contato){
		var contatos = devolveContatos();
		contatos.push(contato);
		localStorage.setItem('contato', JSON.stringify(contatos));
		return true;
	}



	function removeElemento(contatos,posicao_selecionada){
		contatos.splice(posicao_selecionada,1);
		localStorage.setItem('contato', JSON.stringify(contatos));
	}

	

	function adicionaContato(){
		var contato = criaObjetoJson();
		salvaLocalStorage(contato);
		alert('Contato Adicionado com Sucesso!')
		return true;
	}



	function atualizarContato(){

		var contatos = devolveContatos();
		contatos[posicao_selecionada] = JSON.stringify({
			"codigo" : $("#campo-id").val(),
			"nome" : $("#campo-nome").val(),
			"email" : $("#campo-email").val(),
			"endereco" : $("#campo-endereco").val(),
			"telefone_fixo" : $("#campo-telefone-Fixo").val(),
			"telefone_celular" : $("#campo-celular").val()
		});
		localStorage.setItem('contato', JSON.stringify(contatos));
		alert('Contato Atualizado com Sucesso!');
		return true;
	}

	function excluirContato(posicao_selecionada){
		var contatos = devolveContatos();
		removeElemento(contatos,posicao_selecionada);
		alert('Contato Excluído com sucesso!');
	}

	function listarContatos(){
		
		montaColuna();
		var contatos = devolveContatos();
		for (i in contatos) {
			var contato = JSON.parse(contatos[i]);
			$("#tableContato tbody").append(`
				<tr>                     
					<td>  ${contato.codigo}  </td> 
					<td>  ${contato.nome}  </td> 
					<td>  ${contato.email}  </td> 
					<td>  ${contato.endereco}  </td> 
					<td>  ${contato.telefone_fixo}  </td> 
					<td>  ${contato.telefone_celular}  </td> 
					<td> <img src='imagens/edit.png' data-contato-id="${i}" class='botao-editar' />  </td>
					<td> <img src='imagens/delete.png' data-contato-id="${i}" class='botao-excluir' />  </td>
				</tr>
				`);
		}
	}

	function pesquisaContato(nome){
	var contatoPesquisado = null;
	var contatos = devolveContatos();
	for(i in contatos){
		var contact = JSON.parse(contatos[i]);
		if(contact.nome === nome){
			contatoPesquisado = contact;
		}
	}

		$("#tableContato tbody").empty();
		$("#tableContato tbody").append(`
			<tr>                     
				<td>  ${contatoPesquisado.codigo}  </td> 
				<td>  ${contatoPesquisado.nome}  </td> 
				<td>  ${contatoPesquisado.email}  </td> 
				<td>  ${contatoPesquisado.endereco}  </td> 
				<td>  ${contatoPesquisado.telefone_fixo}  </td> 
				<td>  ${contatoPesquisado.telefone_celular}  </td> 
				<td> <img src='imagens/edit.png' data-contato-id="${contatoPesquisado.id}" class='botao-editar' />  </td>
				<td> <img src='imagens/delete.png' data-contato-id="${contatoPesquisado.id}" class='botao-excluir' />  </td>
			</tr>
			`);
}

	$('.formulario').bind("submit",function() {
		if(tipoCadastro == CRIA_CONTATO){
			return adicionaContato();
		}
		else{
			return atualizarContato();
		}

	});

	listarContatos();

	$(".botao-editar").bind("click", function(){
		CRIA_CONTATO = 'EDITAR_CONTATO';
		
		posicao_selecionada = parseInt($(this).attr("data-contato-id"));
		var contatos = devolveContatos();
		var contato = JSON.parse(contatos[posicao_selecionada]);
		$("#campo-id").val(contato.codigo);
		$("#campo-nome").val(contato.nome);
		$("#campo-email").val(contato.email);
		$("#campo-endereco").val(contato.endereco);
		$("#campo-telefone-Fixo").val(contato.telefone_fixo);
		$("#campo-celular").val(contato.telefone_celular);
		$("#campo-id").attr('readonly', 'readonly');
		$("#campo-nome").focus();

	});

	$('.botao-excluir').bind("click",function() {
		posicao_selecionada = parseInt($(this).attr("data-contato-id"));
		excluirContato(posicao_selecionada);
		listarContatos();
	});	

	$('#botao-pesquisar').on('click', function() {

		var pegaValorDaPesquisa = $('#campo-pesquisar').val();
		if(pegaValorDaPesquisa.length == 0){
			alert('não possui nenhum registro');
			return listarContatos();
		}
		pesquisaContato(pegaValorDaPesquisa);
	});


});

meu html

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<title>Agenda de Contatos</title>
	<link rel="stylesheet" href="css/reset.css">
	<link rel="stylesheet" href="css/estilo.css">
</head>
<body>
	<header>
		<div class="container">
			<h1>Agenda Contatos</h1>
		</div>
	</header>
	<main class="container">
		
		<section>
			<h2>Formulário de Contatos</h2>
			<form class="formulario">
				<fieldset>
					<label for="campo-id">Codigo</label>
					<input id="campo-id" type="text" required="true">
				</fieldset>
				<fieldset class="campo-endereco">
					<label for="campo-nome">Nome:</label>
					<input id="campo-nome" type="text" placeholder="digite o seu Nome">
				</fieldset>
				<fieldset class="campo-endereco">
					<label for="campo-email">Email:</label>
					<input id="campo-email" type="text" placeholder="digite o seu Email">
				</fieldset>
				<fieldset class="campo-endereco">
					<label for="campo-endereco">Endereco</label>
					<input id="campo-endereco" type="text" placeholder="Informe o seu Endereço">
				</fieldset>
				<fieldset class="campo-endereco">
					<label for="campo-telefone-Fixo">Telefone Fixo:</label>
					<input id="campo-telefone-Fixo" type="text" placeholder="digite o seu telefone Fixo">
				</fieldset>
				<fieldset class="campo-TelefoneCelular">
					<label for="campo-celular">Telefone Celular:</label>
					<input id="campo-celular" type="text" placeholder="digite o telefone celular">
				</fieldset>
				<button id="adicionar-contato" type='submit' class="botao bto-principal">Adicionar</button>
			</form>
			<br>
			<fieldset class="campo-pesquisar">
				<label for="campo-pesquisar">Pesquisar por Nome:</label>
				<input id="campo-pesquisar" type="text" placeholder="pesquisar...">
				<button id="botao-pesquisar" type='submit' class="botao bto-principal">Pesquisar</button>
			</fieldset>
		</section>
		
		<h2 id="tblContatos">Tabela de Contatos</h2>
		<section>
			<h2> </h2>
			<table style="border: 1px;" id="tableContato">
			</table>
		</section>

	</main>
	<script src="js/jquery-2.0.3.min.js"></script>
	<script src="js/index.js"></script>
	<script>
		$('h1').animate({'margin-left': '+=410'}, 5000);
		$('#tblContatos').animate({'margin-right': '+=410'}, 5050)
	</script>
</body>
</html>

1 Resposta

ezequiellorenzatti

O método pesquisa contato, limpa a lista e recria com o contato criado.

Você precisa atribuir os valore nos inputs respectivos

function pesquisaContato(nome) {
        var contatoPesquisado = null;
        var contatos = devolveContatos();
        for (i in contatos) {
            var contact = JSON.parse(contatos[i]);
            if (contact.nome === nome) {
                contatoPesquisado = contact;
            }
        }

    $("#campo-id").val(contatoPesquisado.codigo).attr('disabled',true);
    $("#campo-nome").val(contatoPesquisado.nome);
    $("#campo-email").val(contatoPesquisado.email);
    $("#campo-endereco").val(contatoPesquisado.endereco);
    $("#campo-telefone-Fixo").val(contatoPesquisado.telefone_fixo);
    $("#campo-celular").val(contatoPesquisado.telefone_celular);

}

Criado 1 de setembro de 2017
Ultima resposta 2 de set. de 2017
Respostas 1
Participantes 2