IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Sharepoint .NET Discussion :

[SP2010] javascript(JQuery) sur formulaire avec IE


Sujet :

Développement Sharepoint .NET

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2012
    Messages : 34
    Par défaut [SP2010] javascript(JQuery) sur formulaire avec IE
    Bonjour,
    J'ai fait un petit formulaire dynamique, et j'enregistre toutes mes info dynamique dans un champ caché que je traite ensuite quand je veux faire un edit ou un view.

    Pour celà lors de l'ajout de ligne j'utilise du Jquery
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $('#example').append('<tr><td width="25%" class="ms-vb"><select title="Project Code List" onChange="calcDay()" id = "nameproject'+ i + '">\
    <option value="0"  selected="selected">(None)</option>
    Ce n'est que un bout mais ça me permet de rajouter un textfield quand je clique sur un bouton.

    ça fonctionne bien sur tous les navigateurs sauf .... IE bien sur.

    En fait ça peut fonctionner, je m'explique.

    Par défault quand on cliques sur nouveau form, edit form et view form, sa ouvre une sorte de popup formulaire au milieu de la page.
    Le script ne fonctionne pas uniquement dans cette popup ...

    Si j'affiche directement le formulaire via l'url dans une page pleine, alors ça fonctionne, par exemple je tape directement : https://monsite/monsoussites/Lists/dispform.aspx?id=3 là le script fonctionne.

    Dans le cas contraire, IE developpeur tools m'indique une erreur sur le append...

    Est ce que vous savez pourquoi et comment résoudre ce problème ?

    Merci

  2. #2
    Expert confirmé Avatar de Lapinpanda
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 230

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2012
    Messages : 34
    Par défaut
    J'ai bien utiliser un _spBodyOnLoadFunctionNames.push("maFonction"); et le developpeur tools de IE m'annonce bien un pb au niveau du "#example".append

    ....

  4. #4
    Expert confirmé Avatar de Lapinpanda
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 230
    Par défaut
    et le developpeur tools de IE m'annonce bien un pb au niveau du "#example".append
    Quel est le contenu de cette erreur?

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2012
    Messages : 34
    Par défaut
    Il me dit erreur :
    Arret provoqué par une erreur JSCRIPT -objet attendu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $('#example').append('<tr><td width="25%" class="ms-vb"><select title="Project Code List" onChange="calcDay()" id = "nameproject'+ i + '">
    Et quand j'ai le meme code directement dans la page sans passer par la popup aucune erreur .....
    Sa me fait même planter I.E 9fois sur 10 ....

  6. #6
    Expert confirmé Avatar de Lapinpanda
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 230
    Par défaut
    Sauf mauvais copier de ta part, pour moi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('#example').append('<tr><td width="25%" class="ms-vb"><select title="Project Code List" onChange="calcDay()" id = "nameproject'+ i + '">'); 

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2012
    Messages : 34
    Par défaut
    Bonjour,

    En fait j'utilise bien celà, c'est juste que je n'ai pas copié mes select qui allait a la suite.

    Autre exemple uniquement sous IE, lors de la création d'un formulaire, j'essaye d'utiliser un PreSaveAction ( fonction de base défini dans sharepoint).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <script type="text/javascript">
    function PreSaveAction(){
     
    var test = document.getElementById("ctl00_m_g_2beb345e_bf17_4fe8_b9e5_e8f90fb99d9f_ff13_1_ctl00_Lookup").value;
     
        alert(test);
        return true;
    }
    </script>
    l'id que je vais chercher existe bien et contient bien au moin une valeur par défault !!
    Il me sort la même erreur que prédédemment, et si je fais la création de formulaire directement dans la page web sans passer par le popup je n'ai pas de probleme !!

  8. #8
    Expert confirmé Avatar de Lapinpanda
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 230
    Par défaut
    Bonjour,

    Effectivement tu utilise correctement le PreSaveAction();

    Petit bémol, ta ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("ctl00_m_g_2beb345e_bf17_4fe8_b9e5_e8f90fb99d9f_ff13_1_ctl00_Lookup")
    Tu passe par l'ID automatique généré par sharepoint, tu ne pourra jamais maintenir un code pareil Pour jouer avec sharepoint / jquery , j'utilise personnellement l’extraordinaire librairie SPServices .

    Une technique pour maintenir ton code stable est de passer par le title du champ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("select[title='" + DisplayName de la colonne + "']")
    Note importante :
    Je vois que tu essaye de travailler avec des lookup, il est capitale de savoir que au dessus de 20 éléments, ta lookup qui était de type <input /> se transforme en <select />.


    Pour ton erreur, je suis toujours dans l'idée que cela vient d'une exécution javascript/jquery exécuté trop tôt...

    EDIT : utilise la tool bar (F12) et attache toi en mode debug c'est capitale pour trouver l'origine de l'erreur

  9. #9
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2012
    Messages : 34
    Par défaut
    oui mais pour quel raison, meme le presaveaction serait executé trop tot ? vu qu'il me donne exactement la meme erreur .....

  10. #10
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2012
    Messages : 34
    Par défaut
    J'ai fait un petit test,j'utilise normalement une fonction un peu similaire à SPServices : getField

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function getField(fieldType,fieldTitle) {
        var docTags = document.getElementsByTagName(fieldType);
        for (var i=0; i < docTags.length; i++) {
            if (docTags[i].title == fieldTitle) {
                return docTags[i]
            }
        }
    }
    Dans mon presaveaction je verifie cet info :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <tr>
    						<td width="190px" valign="top" class="ms-formlabel">
    							<H3 class="ms-standardheader">
    								<nobr>Project Code List</nobr>
    							</H3>
    						</td>
    						<td width="400px" valign="top" class="ms-formbody">
    							<SharePoint:FormField runat="server" id="ff13{$Pos}" ControlMode="New" FieldName="Project_x0020_Code_x0020_List" __designer:bind="{ddwrt:DataBind('i',concat('ff13',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Project_x0020_Code_x0020_List')}"/>
    							<SharePoint:FieldDescription runat="server" id="ff13description{$Pos}" FieldName="Project_x0020_Code_x0020_List" ControlMode="New"/>
    						</td>
    					</tr>
    De la façon suivante :

    function PreSaveAction(){

    test();
    return true;

    }

    function test()
    {
    alert('dans test');
    var monTest = getField('select','Project Code List').options[getField('select','Project Code List').selectedIndex].value;
    alert(monTest);
    }

    Je rentre bien dans le test quand je sauvegarde mais je ne vais pas plus loin.
    IE m'indique une erreur sur le getField('select') .....

    Bien sur aucun des autres navigateurs ne m'indique de probleme.
    La le probleme est element null ou n existe pas ....

  11. #11
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2012
    Messages : 34
    Par défaut
    Encore moi ....
    Je viens de réaliser que sur IE, sharepoint pour le select option me génére en fait un <input text= ....

    Et sur les autres navigateurs sa me laisse bien le select option .....

    Je ne comprend pas

  12. #12
    Expert confirmé Avatar de Lapinpanda
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 230
    Par défaut
    Ta méthode getField à l'air bonne donc je dirais que le problème ne vient pas de la.

    Ce qui m’embête c'est qu'on est pas certains de l'endroit ou est l'erreur. Tu gagnerais en perf / lisibilité / maintenance en découpant un peu ton code :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function test()
    {
    alert('dans test');
    var monChamp = getField('select','Project Code List');
    var monSelectedIndex = monChamp .selectedIndex;
    var monTest = monChamp .options[monSelectedIndex].value;
    alert(monTest);
    }
    Bien sur ce n'est qu'une idée, on ne se prend pas la tête tous le temps ainsi, mais quand on a un bug, c'est bien plus aisée.

    EDIT : tu as pensé à mettre des break points dans ton code avec IE toolbar?

  13. #13
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2012
    Messages : 34
    Par défaut
    Bon merci de ton aide !!

    J explique sa pourra toujours servir à qqn.

    En fait sur tous les navigateurs, pour un lookup au delà de 19 élement, il se transforme en select option.

    Pour IE seulement, il reste en input !!

    Je poste le liens qui donne comment faire :

    http://sharepoint.stackexchange.com/...wform-aspx2010

    Merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 14/01/2008, 13h12
  2. recherche sur formulaire avec caractere joker
    Par christ-94 dans le forum Access
    Réponses: 5
    Dernier message: 24/05/2006, 15h20
  3. Réponses: 19
    Dernier message: 26/01/2006, 09h44
  4. [débutant]petit problème sur formulaire avec onglets
    Par Christophe93250 dans le forum Access
    Réponses: 2
    Dernier message: 06/01/2006, 11h46
  5. Test sur formulaire avec liste des erreurs
    Par Nicos77 dans le forum Langage
    Réponses: 37
    Dernier message: 17/11/2005, 11h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo