2011-10-04 2 views
0

Au travail, j'ai quelques formulaires HTML (asp classique dos) avec des éléments HTML normaux et asp classique cases à cocher dynamique. Nous voulons faire des rapports sur ceci et créer des tableaux croisés dynamiques de sorte que je dois fournir une liste de tous les noms ou identifiants (les noms sont probablement meilleurs) des objets html (statiques et dynamiques) dans l'ordre où ils apparaissent sur le formulaire . Certains sont cachés jusqu'à ce que l'utilisateur interagisse avec l'objet dépendant (nous le voulons aussi).obtenir tous les éléments HTML (les noms ou ids) par ordre d'apparition sur un formulaire en utilisant javascript

J'ai trouvé plusieurs messages au sujet d'obtenir une classe withing tous mais pourrait trouver cette réponse exacte parce que l'ordre est très important!

jQuery est déjà utilisé sur la page afin que ce serait bien d'utiliser.

Merci d'avance!

+1

Cela ressemble à une mission assez complète; où as-tu commencé? Comment c'était? Qu'est ce qui ne s'est pas bien passé? –

+0

Attention: ordre d'apparition à l'écran n'est pas toujours l'ordre dans le code HTML. Cela semble difficile. –

+0

J'ai déjà créé les formes et les cases à cocher dynamiques (à partir de ms sql). Il y a quelques textes cachés qui s'affichent lorsque vous sélectionnez "Autre" dans une liste déroulante. J'ai commencé par construire les formulaires html, puis je m'assure qu'ils publient et enregistrent correctement. Ensuite, j'ai ajouté les cases à cocher dynamiques et js validation sur les champs obligatoires et maintenant je dois préparer le rapport. Tout s'est bien passé (un peu alambiqué) mais ce reportage me donne du chagrin! – Antoni

Répondre

1

Utilisez l'une des options pour créer une liste d'identifiants d'éléments/noms dans les #myForm:

var orderedArrayId = []; 
$("#myForm *[id]").each(function(){ 
    orderedArrayId.push(this.id); 
}) 

var orderedArrayName = []; 
$("#myForm *[name]").each(function(){ 
    orderedArrayName.push(this.name); 
}) 

Au lieu d'utiliser .push(this.id), vous pouvez également utiliser .push(this), si vous voulez obtenir une liste des éléments DOM.

Après avoir exécuté ce code, vous pouvez parcourir tous les éléments:

$.each(orderedArrayId, function(index, element){ 
    //element holds the ID of the element 
    // (or a reference to the DOM element, if you've used `.push(this)` instead 
    //  of `.push(this.id)`) 
    //Do something 
}); 
+0

Cela fonctionne bien. Genre de. J'aurais probablement dû m'expliquer un peu plus mais je ne le pensais pas nécessaire. J'ai 1 page maître (main.asp) et à l'intérieur c'est le nom du tag de formulaire/id = frmMain. Ci-dessous, je fais de la logique classique de spaghetti asp et ensuite inclure la forme html/asp appropriée. '' Je ne pense pas que les objets HTML dans ces fichiers sont notamment de se faire prendre par votre script parce que je ne vois que ceux qui sont dans le frmMain mais pas dans l'include. Des conseils? – Antoni

+0

Alors, vous avez plusieurs formulaires? Boucle à travers chaque forme. –

Questions connexes