Issue #657💬 RespondidoAbierto el 19 de diciembre de 2017por michaellwatsonReacciones 1

Establecimiento de valores de campos ocultos

Respuesta rápidapor michaellwatson1

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)

michaellwatson20 de diciembre de 2017

Genial, Grapesjs es increíble, por cierto.

artf19 de diciembre de 2017

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
michaellwatson20 de diciembre de 2017

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.

Plugins de pago que cumplen con este problema

Seleccionado por temas clave y relevancia de etiquetas para ayudarte a enviar más rápido.

Ver todos los plugins

Cargando recomendaciones de plugins de pago...

Opción gratuita

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 →
Opción premium

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.

Todos los tutoriales →

Explorar categorías de plugins

Ve directamente a las páginas de categorías de plugins en el marketplace.