O plug -in de ciclo jQuery precisa pedalar para a próxima slide na postagem de volta se o grupo de validação não for válido

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

Pergunta

Estou usando o plug -in do JQuyery Cycle (com atributos definidos em um arquivo JS personalizado do site separado) para percorrer duas páginas (separadas por tabelas) de um formulário. Cada página possui seu próprio grupo de validação para os controles nessa página. A primeira página possui um botão "Próximo" que, ao clicar, a validação manualmente da página para o primeiro grupo de validação. Se falhar, as dicas da ferramenta serão exibidas para o usuário corrigir as informações. Se a validação for bem -sucedida, o ciclo próximo comando será chamado.

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

Na segunda página, os controles são agrupados em um segundo grupo de validação com o botão Enviar. Quando o botão Enviar é clicado, a validação do lado do servidor é acionada e se falhar na página recarregar no postback. Tudo isso funciona, exceto se a segunda página falhar, eu quero que o formulário permaneça na segunda página. Portanto, se a página da web estiver recarregada porque a segunda página do formulário falhou em validar, preciso definir o slide inicial para a segunda página do formulário ou se isso não for possível, pelo menos acione o comando do ciclo próximo.

Não parece que eu possa simplesmente definir o lide de inicialização para a segunda página do formulário, porque isso substituirá os outros atributos definidos da função do ciclo que são definidos no arquivo JS separado.

Então, alguém sabe como avançar para o segundo slide no carregamento da página de postagem com base no fato de o segundo grupo de validação falhar quando o botão Enviar foi clicado? Ou devo estar fazendo algo diferente usando o ViewState ou algo assim?

Desculpe, esta é uma pergunta longa e fiada. Espero que seja claro e não confuso. obrigada

Foi útil?

Solução

Se você souber que precisa ir para o segundo slide quando sua página carregar, poderá fazer algo assim:

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

Você só teria que providenciar init ser um objeto vazio literal, exceto quando você precisava definir startingSlide. Se .cycle() está estar em algum lugar fora da sua página, então você pode reservar uma variável para opções específicas de página e $.extend() aquele onde .cycle() é chamado. Por exemplo, em sua página, você pode fazer algo assim:

app_name_space.page_cycle_opts = { startingSlide: 1 };

E depois no arquivo JavaScript que está vinculando o material do ciclo:

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

estou a usar app_name_space Como espaço reservado para qualquer espaço de nome global que seu aplicativo já esteja usando para evitar conflitos de nomes. Se você tivesse que lidar com várias instâncias de ciclo em uma única página, você gostaria de indexar page_cycle_opts por ID do elemento, por exemplo:

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

E depois em outro lugar:

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

A idéia básica é considerar as opções de configuração global como um conjunto de padrões e, em seguida, permitir substituições específicas da página por meio de um mecanismo bem definido e documentado.

Uma resposta longa e fiada a uma pergunta longa. Espero que seja claro e não confuso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top