Establecimiento de valores de campos ocultos
Genial, Grapesjs es increíble, por cierto.
Lee la respuesta completa abajo ↓Pregunta
Tengo un problema con campos ocultos dentro de un elemento de formulario, quiero seleccionar el formulario en el editor y luego cambiar los valores de los campos ocultos haciendo clic en seleccionar cuadros. He añadido las cajas de selección a un panel nuevo.
¿Cómo encuentro los campos ocultos dentro del componente de formulario seleccionado y luego establezco sus valores? Los campos ocultos no son hijos directos de la forma.
<form>
<div>
<tipo de entrada="hidden" valor="1,2,3">
</div>
</form>
Me interesa discutir las mejores prácticas para este problema. Puede que los valores tengan que establecerse cuando se suma el formulario.
Gracias
Respuestas (3)
Genial, Grapesjs es increíble, por cierto.
Hola Michael, quizá quieras confiar en la vista de Component para este propósito '''js const selected = editor.getSelected();
Aquí puedes usar cualquier tipo de cadena de consulta selected.view.$el.find('[type=hidden]').each((el, i, $el) => { modelo const = $el.datos('modelo'); model & console.log('Componente oculto encontrado', model); });
Probablemente añadiré 'find(query)' en Component en la próxima versión
Gracias@artf esto es lo que he hecho al final
const selected = editor.getSelected();
selected.view.$el.find('[type=hidden]').each((el, i, $el) => {
modelo const = $el.datos('modelo');
model & console.log('Componente oculto encontrado', model);
para (var i = 0, len = model.collection.models.length; i < len; i++) {
console.log(model.collection.models[i]);
Cambia my_field al nombre del campo al que quieres dirigirte
if(model.collection.models[i].attributes.name=='my_field'){
var attributes = model.collection.models[i].get('attributes');
attributes.value = 'Valor aquí';
model.collection.models[i].set('atributos', atributos);
regresar;
}
}
regresar;
});
Esto se repite un poco, porque cada campo oculto se detecta en el forach, pero la variable $el contiene todos los campos ocultos, por eso se añadieron los retornos para romper los bucles.
Me gustaría saber si hay una forma más elegante de hacerlo, pero por ahora parece adecuado para ello.
Sería bueno saber si había un disparador tipo "al seleccionar" que se activaba cuando se seleccionaba un elemento, así podría establecer los valores del campo en el nuevo menú de edición una vez seleccionado el formulario.
Probé un método iframe para eso, pero no pareció funcionar.
Gracias de nuevo
Preguntas y respuestas relacionadas
Continúa investigando con debates sobre temas similares.
Issue #1930
[PREGUNTAS] cambiar 2 atributos con 1 rasgo
Tengo un rasgo de entrada, quiero cambiar los 2 atributos (nombre y tipo) en el elemento seleccionado, en canvas es apropiado, pero en el h...
Issue #1683
¿Cómo cambiar el id/clase cuando aparece un nuevo elemento en el editor o renderizo un elemento con IP dinámica?
Hola @artf, Espero que estés bien. Tengo dos preguntas sobre la suma de bloques dinámicos, 1) ¿Es posible renderizar el bloque con id dinám...
Issue #400
Ocultar Un elemento en los comandos
Hola, Quiero ocultar un elemento concreto cada vez que hacemos clic en un botón de barra de herramientas comandos: { Valores predeterminado...
Issue #2073
[PREGUNTAS] Problemas con usar urlLoad
Tengo un problema para llamar a mi endpoint para cargar una plantilla, está haciendo una solicitud OPTIONS previa al vuelo pero no encuentr...
Plugins de pago que cumplen con este problema
Seleccionado por temas clave y relevancia de etiquetas para ayudarte a enviar más rápido.
Cargando recomendaciones de plugins de pago...
Consulta los plugins de código abierto de GrapesJS en GitHub O haz una búsqueda rápida en nuestro catálogo gratuito.
Explora plugins gratuitos →Los plugins premium incluyen soporte, actualizaciones regulares y funciones listas para producción — ahorrando días de trabajo de integración.
Explora plugins premium →Tutoriales relacionados
Guías detalladas sobre el mismo tema.
Explorar categorías de plugins
Ve directamente a las páginas de categorías de plugins en el marketplace.