Galera como eu deixo um *input* readonly

Galera como eu deixo um input readonly se houver algum valor, deixo meu codigo input para entenderem melhor.

codigo

Opa, cola o código no seu tópico, fica mais fácil de ver.

Coloca um id no seu input, vou usar “exame_data” nesse exemplo:

let input = document.getElementById('exame_data');
if (input.value) {
    input.readonly = true;
}
1 curtida

Por gentileza, não poste o mesmo tópico duas vezes. Obrigado.

Obrigado amigo, desculpa por posta duas vezes, sou novo no forum.

Boa tarde, não conseguir rodar, Abra o codigo para verificar como ficou

Aqui ninguém abre links, por protocolo de segurança. :wink:

Copie e cole aqui o código. Lembre de formatar.

1 curtida

Nos próximos posts, faça o que o Fefo falou.

Tenta usar:

input.setAttribute('readonly', true);
1 curtida

ok

Vamos supor, como faço para adicionar essa regra dentro de um form ? seria assim ?<form id="exame_data"></form>

você quer que todos os campos do formulário sejam readonly?

sim começando aparti de um div para fica mas organizado
veja o exemplo

<div class="input-group">
                    <span style="text-align: left;width: 137px;" class="input-group-addon">Pulsoterapia:</span>
                    <input class="form-data , form-control" type="text" name="pulsoterapia_01_paciente" placeholder="__/__/____" onkeypress="$(this).mask('00/00/0000')" value="<?php if(isset($row_msg_cont['pulsoterapia_01_paciente'])){ echo $row_msg_cont['pulsoterapia_01_paciente']; } ?>">
                    <input class="form-data , form-control" type="text" name="pulsoterapia_02_paciente" placeholder="__/__/____" onkeypress="$(this).mask('00/00/0000')" value="<?php if(isset($row_msg_cont['pulsoterapia_02_paciente'])){ echo $row_msg_cont['pulsoterapia_02_paciente']; } ?>">
                    <input class="form-data , form-control" type="text" name="pulsoterapia_03_paciente" placeholder="__/__/____" onkeypress="$(this).mask('00/00/0000')" value="<?php if(isset($row_msg_cont['pulsoterapia_03_paciente'])){ echo $row_msg_cont['pulsoterapia_03_paciente']; } ?>">
 </div><br>

Isso precisa ser feito exatamente no JS?
Você não pode colocar o atributo readonly nos seus inputs?

sim tem que ser por js, pq o input puxa os dados para o value, e quando tiver value não quero que a mesagem seja editada, mais eu posso colocar um por um, so vai da mais trabalho pq a tabela aqui tem uns 100 input.

so queria deixar de forma mais dinamica, mas muito obrigado por me ajudar.

Seleciona todos os elementos:

const inputs = document.querySelectorAll('[name *= "pulsoterapia_"]');

Ai faz um for e adiciona o atributo em cada input:

for (let input of inputs) {
    input.setAttribute('readonly', true);
}

Tenta algo assim.

1 curtida

ok, já vou tentar