Liste de dialogue (JS)

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

Liste de dialogue (JS)

Messagepar Tiyan » 31 Mars 2010 à 13:53

Bonjour,
Sur un bouton d'enregistrement j'ai créé un script qui vérifie les données saisies sur ma page.
Cette page contient 2 onglets.
Si je suis sur l'onglet 1 lors de l'enregistrement alors que mes champs testés dans le script présents dans l'onglet 2.
j'obtiens le message d'erreur :

'document.forms.0.elements[...].options' is null or not an object

Si je suis sur l'onglet 2 lors de l'enregistrement (l'onglet des champs testés dans le script) aucun soucis.

Le script qui pose problème :

//message d'erreur
var MSGP_ZV01_ZV34_Vide='Vous avez commencé à saisir une demande de formation HORS OFFRE mais vous n’avez pas indiqué d’intitulé ou d’objectifs. Veuillez compléter la ligne ou effacer le code stage.';

var xt$='';
for(var k=0;;k++){
// boucle sur tous les champs N_ZV38IDCR00, N_ZV38IDCR00_1, ...
if (k>0) xt$='_'+k;
if (document.forms[0].elements['N_ZV38IDCR00'+xt$] == null) break;

//si le champ ZV38. contient hors offre et que champ ZV01. vide => message d'erreur
if ((document.forms [0].elements['N_ZV38IDCR00'+xt$].options[document.forms [0].elements['N_ZV38IDCR00'+xt$].selectedIndex].text == 'Hors offre') && (document.forms[0].elements['N_ZV01LBRQLG'+xt$].value=='')) return(error('N_ZV38IDCR00'+xt$,MSGP_ZV01_ZV34_Vide));
}

J'ai pensé à stocker les données saisies dans les onglets en dehors des onglets pour etre sur que le script Js les voit mais j'ai plus de 100 champs pour lesquels je devrais effectuer cette opération...

Une autre possibilité serait de prendre en compte l'onglet lors de la récupération de la donnée mais je ne sais pas encore comment faire.

Et sinon ce serait lors de l'enregistrement de placer le focus de la page sur l'onglet sur lequel j'effectue des vérifications.
Tiyan
Posteur néophyte
Posteur néophyte
 
Message(s) : 56
Inscrit(e) le : 08 Déc 2008 à 11:27

Messagepar Gob0 » 02 Avr 2010 à 10:47

je parie que le souci vient de la boucle "for(var k=0;;k++){ "

Tu as oublié de fixer la condition pour sortir de la boucle. Résultat, quand "k" est supérieur au nombre de champs, ca plante.

remplace ta ligne par
Code : Tout sélectionner
for(var k=0; k<document.forms[0].elements.length; k++){
Avatar de l’utilisateur
Gob0
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 378
Inscrit(e) le : 23 Août 2006 à 09:19
Localisation : Lausanne

Messagepar Tiyan » 02 Avr 2010 à 14:09

Je gère la sortie de boucle pas la ligne :
(document.forms[0].elements['N_ZV38IDCR00'+xt$] == null) break;

En gros on incrémente le _1, _2, _3, _4 ... a la suite du nom de l'item recherché. Si on ne le trouve pas on arrete la boucle car on a deja parcouru tous les champs a vérifier.

A priori le problème vient du focus de la page. Quand je suis sur un onglet les champs de l'autre ne sont pas visible pour le script de sauvegarde de la page.
Tiyan
Posteur néophyte
Posteur néophyte
 
Message(s) : 56
Inscrit(e) le : 08 Déc 2008 à 11:27

Messagepar Gob0 » 02 Avr 2010 à 20:39

t'as fait les onglets comment? Quand tu regardes le source de ta page, les champs sont dedans?

T'as essayé de parcourir tous les champs de la page et d'afficher leur nom? Juste pour voir s'il n'en manque pas.
Avatar de l’utilisateur
Gob0
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 378
Inscrit(e) le : 23 Août 2006 à 09:19
Localisation : Lausanne

Messagepar Tiyan » 07 Avr 2010 à 13:56

Je crée un tableau et dans les options j'affiche 1 seule colonne a la fois.
Pour chaque colonne je donne un Id et un Name/Id.
Ensuite je crée un hotspot sur un libellé afin que celui ci m'ouvre mon onglet (pas indispensable mais plus joli) :
Pour une colonne d'Id DEVPRO et de Name/Id PreferencesPage ca donne le code suivant pour le hotspot :
@If($PreferencesPage = "DEVPRO"; @Return(""); "");
FIELD $PreferencesPage := "DEVPRO";
@Command([RefreshHideFormulas])

Chaque onglet me génère un code dans le source de la page de type :
<table>
<tr><td><br>
<table>....
... code du tableau
</table>

Petit problème dans le code source de ma page web, je ne vois qu'un onglet a la fois.

Je ne sais pas si tout est clair donc ne pas hésiter a me poser des questions.
Tiyan
Posteur néophyte
Posteur néophyte
 
Message(s) : 56
Inscrit(e) le : 08 Déc 2008 à 11:27

Messagepar roubech » 07 Avr 2010 à 19:23

tu utilises le système natif de Domino pour générer les onglets
comme tu as vu, il ne genère le code que d'un onglet à la fois
tu as des allers-retours avec le serveur à chaque fois que tu change d'onglet
tu ne peux donx pas parcourir tous les champs de tous les onglets en JS avant le submit

soit tu continues de laisser Domino gérer et tu fais le controle côté serveur
soit tu gères toi même tes onglets en DHTML
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille


Retour vers Développement

cron