Como desativar um campo de formulário para impedir a introdução de dados pelo utilizador

Está interessado em impedir que os utilizadores introduzam dados num campo de formulário específico? Desativar um campo ou torná-lo só de leitura pode ser útil se pretender que os utilizadores visualizem o valor do campo sem a opção de o editar. Neste tutorial, vamos orientá-lo sobre como desativar um campo de formulário, impedindo efetivamente qualquer entrada do utilizador.

Esta abordagem também pode ser útil quando se pretende incluir este valor na etiqueta inteligente {all_fields} para e-mails de notificação ou numa exportação CSV.

Criar o seu formulário

Para começar, comece por criar um novo formulário. Neste tutorial, vamos demonstrar a utilização de um campo Texto de parágrafo que incluirá uma mensagem com uma Smart Tag que representa a data atual como um carimbo de data/hora para o envio do formulário.

Se precisar de ajuda com o processo de criação de formulários, consulte este tutorial para obter orientações passo a passo.

Depois de criar o seu formulário com sucesso, insira um Texto do parágrafo para dentro dele. No campo Avançado incluir wpf-disable-field como o Nome da classe CSS para ativar a funcionalidade de desativação do campo.

Adicione o nome da classe CSS ao campo correto para desativar um campo de formulário

Se utilizar mais do que uma classe CSS para um campo de formulário, certifique-se de que coloca um espaço entre cada nome de classe.

Desativar o campo de formulário

É agora altura de adicionar o fragmento de código que vai juntar tudo isto.

Se precisar de ajuda para adicionar código ao seu sítio, consulte este tutorial.

/**
 * Make standard form fields to make read-only
 * To apply, add CSS class 'wpf-disable-field' (no quotes) to field in form builder
 *
 * @link https://wpforms.com/developers/disable-a-form-field-to-prevent-user-input/
 */

function wpf_dev_disable_field() {
	?>
	<script type="text/javascript">

	jQuery(function($) {

		$( '.wpf-disable-field input, .wpf-disable-field textarea' ).attr({
			 readonly: "readonly",
			 tabindex: "-1"
		});
		
	});

	</script>
	<?php
}
add_action( 'wpforms_wp_footer_end', 'wpf_dev_disable_field', 30 );

O código acima não só desactivará qualquer campo de formulário em qualquer formulário com a classe CSS wpf-disable-field, como também passará por cima desses campos à medida que o utilizador percorre cada campo.

Agora, os seus visitantes verão o campo e o texto predefinido que colocou nele, mas não poderão alterar o campo.

A melhor forma de impedir a introdução de dados noutros campos, como o menu pendente, as caixas de verificação ou a escolha múltipla, seria fornecer apenas uma única opção ao utilizador.

E é tudo o que precisa para configurar os seus campos de formulário para serem apenas de leitura. Gostaria de alterar os subtítulos do campo Nome? O nosso artigo sobre Como alterar os subtítulos do campo Nome irá guiá-lo através dos passos para o conseguir.

Ação de referência

wpforms_wp_footer_end

FAQ

P: Posso utilizar isto para outros campos também?

A: Com certeza! Desde que coloque o wpf-disable-field para os campos, cobrirá cada um deles.

Como exemplo, este snippet irá desativar um campo de formulário Dropdown.

/**
 * Make standard form fields to make read-only
 * To apply, add CSS class 'wpf-disable-field' (no quotes) to field in form builder
 *
 * @link https://wpforms.com/developers/disable-a-form-field-to-prevent-user-input/
 */

function wpf_dev_disable_field() {
    ?>
    <script type="text/javascript">
 
    jQuery(function($) {
 
        $( '.wpf-disable-field input, .wpf-disable-field textarea, .wpf-disable-field select' ).attr({
			 disabled: true,
             tabindex: "-1"
        });
		
		$( '.wpforms-form' ).on( 'wpformsBeforeFormSubmit', function(){
			$( '.wpf-disable-field input, .wpf-disable-field textarea, .wpf-disable-field select' ).removeAttr( 'disabled' );
		})
         
    });
 
    </script>
    <?php
}
add_action( 'wpforms_wp_footer_end', 'wpf_dev_disable_field', 30 );