Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Hoje o sistema recupera o valor(value) do campo, mas agora preciso recuperar também o o valor data- deste mesmo campo, conforme pergunta http://pt.stackoverflow.com/questions/158010/habilitar-e-desabilitar-bot%C3%A3o-salvar/158017#158017.
A Finalidade deste, é fazer uma comparação entre o
value e data-* de um elemento <input>
Para que seja possível fazer uma condição, para habilitar o botão salvar, caso algum campo do formulário seja alterado e inabilitar o botão se nada for alterado no formulário.
Segue como esta o campo em Html e Jquery:
<label for="descricao">Descrição</label>
<input class="span12" id="descricaoEditar" type="text" name="descricao" />
<input id="urlAtualEditar" type="hidden" name="urlAtual" value="" />
$(document).on('click', '.editar', function(event) {
$("#idEditar").val($(this).attr('idLancamento'));
$("#descricaoEditar").val($(this).attr('descricao'));
$("#descricaoEditar").val($(this).data('descricao'));
$("#fornecedorEditar").val($(this).attr('cliente'));
$("#valorEditar").val($(this).attr('valor'));
$("#vencimentoEditar").val($(this).attr('vencimento'));
$("#pagamentoEditar").val($(this).attr('pagamento'));
$("#formaPgtoEditar").val($(this).attr('formaPgto'));
$("#categoria_idEditar").val($(this).attr('categoria_id'));
$("#conta_idEditar").val($(this).attr('conta_id'));
$("#urlAtualEditar").val($(location).attr('href'));
var estornado = $(this).attr('estornado');
if(estornado == 1){
$("#estornadoEditar").attr('checked', true);
}
else{
$("#estornadoEditar").attr('checked', false);
}
var baixado = $(this).attr('baixado');
if(baixado == 1){
$("#pagoEditar").attr('checked', true);
$("#pagoEditar").attr('disabled', true);
$("#estornadoEditar").attr('disabled', false);
$("#divPagamentoEditar").show();
}
else{
$("#pagoEditar").attr('checked', false);
$("#pagoEditar").attr('disabled', false);
$("#estornadoEditar").attr('disabled', true);
$("#divPagamentoEditar").hide();
}Porque devo utilizar ajax?
Eu consigo recuperar o valor do banco.
Exemplo, se no banco, descricao é X.
Eu consigo atribuir para o input o valor recuperado do banco.
input value = X
O que eu quero agora, é recuperar também data-*:
data-valor = X
Como qualquer outro atributo HTML:
var attr = $("#identifier").attr('data-nome-escolhido');
Não deu certo!
Veja como ficou:
<input class="span12" id="descricaoEditar" type="text" name="descricao" data-descricao=""/><br>
<input class="btn btn-primary"type="button" value="Salvar Alterações" id="btn-salvar" disabled="disabled" />
<script type="text/javascript">
$(document).ready(function() {
$('form :input').change(function() {
if ($(this).val() != $(this).data('valor')) {
$('#btn-salvar').attr('disabled', false)
} else {
$('#btn-salvar').attr('disabled', true)
}
});
});
</script>
$("#descricaoEditar").val($(this).attr('descricao'));
var attr = $("#descricaoEditar").attr('data-descricao');Estando o atributo "data-descricao" vazio, o que realmente espera receber no seu código? Ele não faz sentido algum.
Por exemplo, esse código não serve pra nada:
$("#descricaoEditar").val($(this).attr('descricao'));
Está pegando um atributo que não existe, e adicionado ao value. O que realmente quer fazer com o código acima?
Este código serve sim.
Ele retorna o valor gravado no banco de dados, atribuindo este valor ao value do campo.
Quero fazer a mesma coisa, mas ao invés de atribuir somente o value, quero atribuir o data-*
Deixa eu mudar a explicação. Se o atributo "descrição" não existe no código que você postou, não me serve como parâmetro para lhe ajudar.
Outro ponto. Como você quer obter algum valor de "data-descricao", sendo que não há nenhuma valor atribuído?
Veja, está vazio:
<input class="span12" id="descricaoEditar" type="text" name="descricao" data-descricao=""/><br>
Em nenhum momento, com javascript, está sendo atribuído valores.
É isto que eu quero aprender, atribuir o valor data por javascript.
A atribuição do value já está sendo feita.
$("#identifier").attr('data-nome-escolhido' , valor);
ou (jQuery >= 1.4.3):
$("#identifier").data('nome-escolhido' , valor);
Você vai precisar utilizar AJAX, de uma pesquisa sobre o assunto e tente fazer.
Duvidas poste novamente aqui