JQuery Cycle Plugin doit faire défiler à la diapositive suivante sur le post retour si le groupe de validation pas valide

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

Question

J'utilise le plugin Cycle JQuery (avec des attributs définis dans le fichier d'un site distinct large mesure) pour faire défiler entre deux pages (séparés par des tables) d'une forme. Chaque page a son propre groupe de validation pour les contrôles sur cette page. La première page un bouton « Next » que lorsque vous cliquez dessus déclenche manuellement la validation de la page pour le premier groupe de validation. Si elle échoue à l'outil sont affichés des conseils pour l'utilisateur de corriger les informations. Si la validation réussit, le cycle commande suivante est appelée.

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

Sur la deuxième page, les contrôles sont regroupés dans un deuxième groupe de validation avec le bouton soumettre. Lorsque ce bouton est cliqué, la validation côté serveur est déclenchée et si elle échoue les rechargements de pages sur postback. Tout cela fonctionne, sauf si la deuxième page ne je veux la forme de rester sur la deuxième page. Donc, si la page Web est rechargée car la deuxième page du formulaire n'a pas validé que je dois soit définir la diapositive à partir de la deuxième page du formulaire ou si ce n'est pas possible au moins déclencher le cycle de commande suivante.

Il ne semble pas que je peux régler la startingslide à la deuxième page du formulaire parce que cela va remplacer les autres attributs définis de la fonction du cycle qui sont définies dans le fichier js séparé.

Alors ne quelqu'un sait comment faire avancer à la deuxième diapositive sur la charge de page postback selon que le deuxième groupe de validation a échoué quand on a cliqué sur le bouton d'envoi? Ou dois-je faire quelque chose de différent en utilisant viewstate ou quelque chose?

Désolé, c'est une question de longue haleine. Espoir son clair et ne pas confondre. Merci

Était-ce utile?

La solution

Si vous savez que vous devez aller à la deuxième diapositive lorsque puis votre page se charge que vous pourriez faire quelque chose comme ceci:

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

Vous auriez tout simplement d'organiser init d'être un objet vide littéral, sauf si vous avez besoin de mettre startingSlide. Si .cycle() est d'être quelque part en dehors de votre page, vous pouvez réserver une variable pour les options spécifiques à la page et $.extend() que lorsque .cycle() est appelé. Par exemple, dans votre page, vous pouvez faire quelque chose comme ceci:

app_name_space.page_cycle_opts = { startingSlide: 1 };

puis loin dans le fichier JavaScript qui lie les choses du cycle:

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

J'utilise app_name_space comme un espace réservé pour votre application quel que soit l'espace de noms global est déjà utilisé pour éviter les conflits de nom. Si vous deviez faire face à plusieurs instances de cycle sur une seule page alors vous voulez indexer page_cycle_opts par ID d'élément, par exemple:

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

puis loin ailleurs:

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

L'idée de base est de considérer les options de configuration globale comme un ensemble de valeurs par défaut et permet ensuite spécifiques à la page des remplacements par un mécanisme bien défini et documenté.

Une réponse longue haleine à une question de longue haleine. Espoir son clair et ne pas confondre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top