El complemento de ciclo jQuery debe andar en bicicleta a la próxima deslizamiento en la publicación de la publicación si el grupo de validación no es válido

StackOverflow https://stackoverflow.com/questions/4606152

Pregunta

Estoy usando el complemento de ciclo jQuery (con atributos definidos en un archivo js personalizado de sitio amplio separado) para andar en bicicleta entre dos páginas (separadas por tablas) de un formulario. Cada página tiene su propio grupo de validación para los controles en esa página. La primera página tiene un botón "Siguiente" que, cuando se hace clic, se hace clic, dispara manualmente la validación de la página para el primer grupo de validación. Si falla, los consejos de herramienta se muestran para que el usuario corregirá la información. Si la validación tiene éxito, se llama al comando del siguiente ciclo.

$('#request-information').cycle('next');

En la segunda página, los controles se agrupan en un segundo grupo de validación con el botón Enviar. Cuando se hace clic en el botón Enviar, la validación del lado del servidor se activa y, si falla, la página se vuelve a cargar en la posterior. Todo esto funciona, excepto si la segunda página falla, quiero que el formulario permanezca en la segunda página. Entonces, si la página web se vuelve a cargar porque la segunda página del formulario no pudo validar, necesito establecer la diapositiva inicial en la segunda página del formulario o si eso no es posible al menos activar el comando del siguiente ciclo.

No parece que pueda establecer la línea de inicio en la segunda página del formulario porque eso sobrescribirá los otros atributos definidos de la función de ciclo que se establece en el archivo JS separado.

Entonces, ¿alguien sabe cómo avanzar a la segunda diapositiva en la carga de la página de devolución en función de si el segundo grupo de validación falló cuando se hizo clic en el botón Enviar? ¿O debería estar haciendo algo diferente usando ViewState o algo así?

Lo siento, esta es una pregunta larga. Espero que sea claro y no confuso. Gracias

¿Fue útil?

Solución

Si sabe que necesita ir a la segunda diapositiva cuando se cargue su página, entonces podría hacer algo como esto:

var init = { startingSlide: 1 }; // i.e. second slide, the indices are zero-based
$('whatever').cycle($.extend(init, the_name_of_your_global_default_options));

Solo tendrías que arreglar init ser un objeto vacío literal excepto cuando necesitabas establecer startingSlide. Si .cycle() está estar en algún lugar fuera de su página, entonces podría reservar una variable para las opciones específicas de la página y $.extend() que donde .cycle() se llama. Por ejemplo, en su página, podría hacer algo como esto:

app_name_space.page_cycle_opts = { startingSlide: 1 };

Y luego en el archivo JavaScript que está vinculando las cosas del ciclo:

app_name_space.page_cycle_opts = app_name_space.page_cycle_opts || { };
$('whatever').cycle($.extend(app_name_space.page_cycle_opts, default_options));

Estoy usando app_name_space Como marcador de posición para cualquier espacio de nombres global que su aplicación ya esté utilizando para evitar conflictos de nombres. Si tuviera que lidiar con múltiples instancias de ciclo en una sola página, entonces desea indexar page_cycle_opts por ID de elemento, por ejemplo:

app_name_space.page_cycle_opts['X'] = { startingSlide: 1 };

Y luego en otro lugar:

$('whatever').each(function() {
    $(this).cycle($.extend(
        app_name_space.page_cycle_opts[this.id] || { },
        default_options
    ));
});

La idea básica es considerar las opciones de configuración global como un conjunto de valores predeterminados y luego permitir las anulaciones específicas de la página a través de un mecanismo bien definido y documentado.

Una respuesta larga a una pregunta larga y sinnada. Espero que sea claro y no confuso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top