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

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 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.
    • Por Blogger
      Boa noite pessoal, eh meu primeiro topico aqui, preciso muito da ajuda de voces para resolver uma questao em meu site...
      Tenho um aplicativo que puxa algumas informacoes do meu site via http.. certo..
      uma delas sao 2 horarios, de abertura e de fexamento, supoe o seguinte:
       
      HorInicio: 8:00
      Horfim: 18:00     
      No php fica assim..
      (esse date(`w`) == 2) confere se hoje eh terca feira, tenho um desse para cada dia da semana)
      if(date('w') == 2){ // caso a hora atual for maior ou igual a hora inicio e menor ou igual ao fim ele manda true para meu app e ele entende que esta aberto if(date('H:i') >= $ini AND date('H:i') <= $fim){ echo true; } else { echo 0; } } Eu consegui configurar de uma forma que ele entenda que o estabelecimento fica aberto entre esses dois horarios, porem, surgiu a necessidade de colocar o seguinte:
      HorInicio:18:00
      Horfim: 2:00 (Sendo esse horario duas horas da madrugada do dia seguinte)
       
      a questao eh, como fazer meu codigo de php entender que essas 2:00 se trata do dia seguinte? pois da forma atual ele pega o intervalo entre 2:00 e 18:00 (3:00, 4:00, ate as 18:00)
      e eu gostaria que fosse das 18:00 para frente (19:00, 20:00, ate as 2:00)
       
      No meu banco esta definido apenas como tempo atual sem a data, eh possivel fazer sem cadastrar uma data no banco? apenas com o tempo... e se nao for possivel, como fazer isso ser automatico? toda vez que ele for entrar nesse php ele entender qual dia eh hoje e que fica aberto ate amanha ate que horas..
       
      Desculpe se ficou meio confuso.. mas qualquer duvida podem perguntar que eu vou responder, espero alguma luz, obrigado!
       
×

Informação importante

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