Necesito hacer una verificación en una página que mostrará un mensaje cuando los primeros 3 campos de formulario en una página estén vacíos. Puedo escribir los cheques y mostrar el mensaje, pero no estoy seguro de cuál es la forma correcta de manejar la parte "while" en js/jquery. Podría simplemente poner esto en un bucle que se ejecuta cada 100 ms, pero estoy 100% seguro de que es absolutamente incorrecto.
var empty = true; $('input[type="text"].slice(0,3)').each(function() { if ($(this).val() != "") { empty = false; return false; } }); if (empty) { document.getElementById('interactive-warning').style.display = 'none'; };¿Cuál es la forma "correcta" de hacer esto?
El código de trabajo:
$(document).ready(function(){ $('.form-text').slice(0,3).on('input', function() { var empty = true; $('.form-text').slice(0,3).each(function() { if ($(this).val() != "") { empty = false; return false; } }); if (!empty) { document.getElementById('interactive-warning').style.display = 'none'; } else { document.getElementById('interactive-warning').style.display = 'block'; }; }).trigger('input'); });Necesitaba ejecutar en listo porque el código debía agregarse antes del formulario.
Puede escuchar el evento de input , que le permitirá saber cuándo el usuario cambia esos valores, por ejemplo:
mueva su código existente a la function checkIfEmpty() { ... y agregue:
$('input[type="text"].slice(0,3)').on("input", checkIfEmpty); (tenga en cuenta que no hay () después de checkIfEmpty en el evento)
Si sus entradas se cambian a través del código, los eventos de la interfaz de usuario no se generan, por lo que necesitará una alternativa. La forma más fácil es: cuando su código cambia las entradas, también llame a checkIfEmpty() .