Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde,
Tenho a seguinte input date time, o que acontece que essa input chama sua id, porem não funciona com o meu script porque o script chama name e quando mudo para id não funciona o date time.
É um script de replaceAll, ou seja ao selecionar a data e a hora no date time em teoria deveria substituir (NOME DO CLIENTE) pela data e hora.
Bom, eu gostaria de saber se tem como modificar o script para chamar a id em vez do name ou ajustar a input para ser chamada por name.
$('input[name="demo3"]').change(function(){
var nome = $(this).val();
var text = $('textarea[name="nome pessoal"]').val();
$('textarea[name="nome pessoal"]').val(text.replaceAll('(NOME DO CLIENTE)',nome));
});
<input id="demo3" type="text" size="25"><a href="javascript:NewCal('demo3','ddmmmyyyy',true,24)"><img src="images/cal.gif" width="16" height="16" border="0" alt="Pick a date"></a>>
39 minutos atrás, Julio Cavallari disse:
Pra chamar o ID é só colocar um "#" antes do id do elemento.
Ex:
<input type="text" id="meuinput">
<script>
var meuinput = $("#meuinput").val();
</script>
No seu código ficaria assim:
$('#demo3').change(function(){
var nome = $(this).val();
var text = $('textarea[name="nome pessoal"]').val();
$('textarea[name="nome pessoal"]').val(text.replaceAll('(NOME DO CLIENTE)',nome));
});
Oi Julio, tentei aqui e não deu certo, carrega o datetime porem não reemplaça

Troque o método replaceAll() por replace.
O método replaceAll() substitui o elemento todo e não somente o texto dentro dele.
$('#demo3').change(function(){
var nome = $(this).val();
var text = $('textarea[name="nome pessoal"]').val();
$('textarea[name="nome pessoal"]').val(text.replace("(NOME DO CLIENTE)",nome));
});
Dessa maneira ao mudar o valor do input#demo3 irá alterar o valor do <textarea>. Porém o método ***.change()*** não é ativado se você alterar o valor do elemento via JavaScript como está acontecendo ai.
Usando ***.change() ***você só ativará a função se você mesmo alterar o valor do input#demo3>
15 horas atrás, Julio Cavallari disse:
Troque o método replaceAll() por replace.
O método replaceAll() substitui o elemento todo e não somente o texto dentro dele.
$('#demo3').change(function(){
var nome = $(this).val();
var text = $('textarea[name="nome pessoal"]').val();
$('textarea[name="nome pessoal"]').val(text.replace("(NOME DO CLIENTE)",nome));
});
Dessa maneira ao mudar o valor do input#demo3 irá alterar o valor do <textarea>. Porém o método ***.change()*** não é ativado se você alterar o valor do elemento via JavaScript como está acontecendo ai.
Usando ***.change() ***você só ativará a função se você mesmo alterar o valor do input#demo3
Julio, olha o que aconteceu, quando insiro a data através do date time ele não esta reemplaçando, porem quando eu digito a data na input ele reemplaça. o que pode ser?>
Em 30/09/2018 at 14:57, silvagno disse:
Julio, olha o que aconteceu, quando insiro a data através do date time ele não esta reemplaçando, porem quando eu digito a data na input ele reemplaça. o que pode ser?
O que acontece é que o método .change() do jQuery não é disparado quando há alguma alteração via JS no input. Por isso quando você altera pela date time não funciona. O que você pode fazer é usar um .trigger() no date time. Fazendo assim ele disparar artificialmente o método .change(). Tente alterar a função do date time, e adicione isso:
$('#demo3').trigger('change');
Logo após o date time inserir o valor no input#demo3>
Em 01/10/2018 at 21:30, Julio Cavallari disse:
O que acontece é que o método .change() do jQuery não é disparado quando há alguma alteração via JS no input. Por isso quando você altera pela date time não funciona. O que você pode fazer é usar um .trigger() no date time. Fazendo assim ele disparar artificialmente o método .change(). Tente alterar a função do date time, e adicione isso:
$('#demo3').trigger('change');
Logo após o date time inserir o valor no input#demo3
Obrigado por responder Julio, sou leigo nesse assunto. Por favor me confirme se o codigo final ficaria assim:
Desde já agradeço.
$('#demo3').change(function(){
$('#demo3').trigger('change');
var nome = $(this).val();
var text = $('textarea[name="nome pessoal"]').val();
$('textarea[name="nome pessoal"]').val(text.replace("(XXXX)",nome));
});>
14 horas atrás, silvagno disse:
Obrigado por responder Julio, sou leigo nesse assunto. Por favor me confirme se o codigo final ficaria assim:
Desde já agradeço.
$('#demo3').change(function(){
$('#demo3').trigger('change');
var nome = $(this).val();
var text = $('textarea[name="nome pessoal"]').val();
$('textarea[name="nome pessoal"]').val(text.replace("(XXXX)",nome));
});
Não, essa parte:
$('#demo3').trigger('change');
Tem que ser colocada nas funções do date time. Para você ativar o método .change() artificialmente. A função que substitui o texto está correta.>
Em 11/10/2018 at 00:52, Julio Cavallari disse:
Não, essa parte:
$('#demo3').trigger('change');
Tem que ser colocada nas funções do date time. Para você ativar o método .change() artificialmente. A função que substitui o texto está correta.
Quando você diz "colocada nas funções do date time" é colocar no arquivo .js? se sim, eu tentei e não consegui identificar o lugar correto. Deixo o link do arquivo por se pode verificar por favor.
[arquivo.js](https://www.sendspace.com/file/669b4r)
Pra chamar o ID é só colocar um "#" antes do id do elemento.
Ex: