Ir para conteúdo

Recommended Posts

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>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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));
});

Compartilhar este post


Link para o post
Compartilhar em outros sites
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

1.png

2.png

3.png

4.png

5.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites
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?

Compartilhar este post


Link para o post
Compartilhar em outros sites
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

Compartilhar este post


Link para o post
Compartilhar em outros sites
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));
});

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
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.

Compartilhar este post


Link para o post
Compartilhar em outros sites
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Nioshi
      Bom dia pessoal, tenho o seguinte problema, meu back-end com PHP precisa fazer um select no banco de dados SQL server, e uma das condições para pegar o dado é a data, até ai sem problemas, se eu utilizar:
      $dataInicio = $dataInicio->format('d/m/Y'); ele pega o dado sem problema algum do meu banco, porem quando foi tentado implementar em outro SQL Server, ele retorna o seguinte erro: 
      SQLSTATE [22007, 242]: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]A conversão de um tipo de dados nvarchar em um tipo de dados datetime resultou em um valor fora do intervalo. ou seja, eu acho que o problema é a forma que o sql foi instalado(inglês,português), enfim, o que eu realmente preciso e se tem como eu saber o dateformat do SQL server, antes de setar a variável da data para consulta.
       
      no SQL do cliente se colocar o seguinte código:
      $dataInicio = $dataInicio->format('m/d/y'); ele também funciona sem problema algum, o que eu preciso saber é quando utilizar qual.
       
      Obrigado desde já.
    • Por TeixeiraRamos
      Por favor,
      MySQL com PHP7
      Estou digitando assim:
      echo "Data Ano: " . $row_registros['DATE(format([data_ano_liturgico],("d/m/Y")'] . "<br>"; Esperava esse resultado, por exemplo: 14/09/2018
       
      Estou tendo esse resultado:
       
       
    • Por Rodymb
      Bom dia!
       
      Preciso fazer um update em um campo do tipo  int de uma tabela para corrigir o horário e a informação que estou buscando está em um campo do tipo datetime de outra tabela. Fiz um update da seguinte forma:
       
      update zan_m00 set m00zc=(SELECT convert(varchar(11),dataemissao,114) FROM tab_nota_header where dataemissao between '2018-08-01 00:00:00' and '2018-08-01 23:59:59' and numpdv=111 and codloja=1 and numnota=74841) where m00af='2018-08-01' and m00za=1 and m00ac=111 and m00ad=69614
       
      Esse update retornou a seguinte mensagem:
      Falha ao converter o varchar valor '11:56:57:00' para o tipo de dados int.
       
      No lugar onde está varchar experimentei usar int, entretanto, ele faz o update somando todo o conteúdo do campo, também usei o CAST e o problema é o mesmo.
      Se eu fizer somente o select, ele retorna pra mim somente a hora, que é o que preciso, mas aí tem outro problema, no campo tipo int a hora é tudo junto 115657 e nesse select ele retorna 11:56:57.
       
      Existe alguma forma de fazer esse update da forma que preciso?
       
    • Por Luis Fernando R. Valle
      Boa tarde.
      Tenho um agendamento para inserir. Mas antes de inserir, preciso validar para ver se não há agendamento no intervalo selecionado
       
      Hoje estou fazendo 2 campos para data inicial e final e 2 campos para horario inicial e final, mas não estou conseguindo.
      Se puder me passar se a melhor forma e o datetime e como fazer essa consulta no banco.
       
      Desde já agradeço.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.