Tengo un formulario con pocos campos junto con un botón de opción. Este botón de opción es un campo opcional. Pero no puedo enviar el formulario si no selecciono ninguna opción del botón de opción.
<div class="input-field-outer">
[text* your-name class:name placeholder "Name or business name*"]
</div>
<div class="input-field-outer">
[email* email placeholder "Email*"]
</div>
<div class="input-field-outer">
[text* contact-number id:telno class:hs-phone-number placeholder "Contact number*"]
<span id="errmsg"></span>
</div>
<div class="input-field-outer">
<div class="radio-outer">
[radio customer_type "New Customer" "Old Customer"]
</div>
</div>
Funcionará cuando haga que alguno de ellos esté seleccionado por defecto:
[radio customer_type default:1 “New Customer” “Old Customer”]
Cualquier idea sobre el uso del botón de opción sin elementos predeterminados.
Una solución sería usar una casilla de verificación y agregar el parámetro exclusivo. Esto le permite enviar el formulario sin seleccionar un tipo de cliente.
[checkbox customer_type exclusive "New Customer" "Old Customer"]
-
Gracias @vicente. En realidad, obtuve la misma solución del soporte: wordpress.org/support/topic/…. Gracias de nuevo por tu respuesta.
– Rijó
22 de agosto de 2017 a las 7:00
Casilla de verificación exclusiva en realidad no funcionó para mí debido al CSS del tema que no lo admitía.
Sin molestarme en agregar JS y CSS al tema para admitir esta característica, logré superar el problema con la radio usando un campo “vacío” más:
[radio choice label_first default:1 "" "Yes" "No"]
Después de eso en CSS agregué:
.wpcf7-list-item.first {
display: none;
}
Esta primera opción seleccionada que no se mostró en el front-end (y el correo resultante) e hizo que la casilla de verificación no fuera requerida en la validación.
-
Elegante. Si un usuario sin CSS envía el formulario, aún mostraría la selección en blanco, por lo que, aunque incómodo para este usuario mítico, aún comunicaría lo que enviaría. También puede hacer que diga “n/a”, según su caso de uso.
– usuario241244
1 de septiembre de 2018 a las 23:19
-
Lo mejor es envolverlo en un
div
o algo, también, para que pueda orientarlo por su clase, como.radio-no-first .wpcf7-list-item.first
– usuario241244
1 sep 2018 a las 23:25
Para eliminar la validación en todos los campos de radio, agregue esto a functions.php o donde sea apropiado.
remove_filter('wpcf7_validate_radio', 'wpcf7_checkbox_validation_filter', 10);
Si desea mantener la validación necesaria para alguno de las radios, cámbialas a esto:
[radio fieldName class:required "Yes" "No"]
Luego agregue este código a functions.php:
remove_filter('wpcf7_validate_radio', 'wpcf7_checkbox_validation_filter', 10);
add_filter('wpcf7_validate_radio', function($result, $tag) {
if (in_array('class:required', $tag->options)) {
$result = wpcf7_checkbox_validation_filter($result, $tag);
}
return $result;
}, 10, 2);
Puede seleccionar qué botón de radio se selecciona de forma predeterminada utilizando la opción
default:1
para la primera radio o default:2
para la segunda radio, y así sucesivamente.
Agregando la opción default:0
hace exactamente lo que estás buscando. Hace que todos los botones de radio no estén seleccionados.
Acabo de leer este comentario que dice:
El autor de CF7, Takayuki Miyoshi, cree que un botón de opción es un campo obligatorio de forma predeterminada. Y no es el único. Este sigue las especificaciones HTML de W3C para botones de radio.
y
Si no necesita tener ninguna opción requerida, puede cambiar a usar una casilla de verificación.
Por lo tanto, crear una solución alternativa no cumple con las especificaciones del W3C y puede que no sea la mejor solución debido a esto.