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

jQuery Discussion :

Modal bootstrap et autofocus textarea


Sujet :

jQuery

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 13
    Par défaut Modal bootstrap et autofocus textarea
    Bonsoir,

    Je tente de mettre le focus sur les textarea de chacune de mes modals bootstrap, mais en vain.

    J'ai tenté l'attribut html autofocus, qui ne fonctionne pas, je tente de l'ajouter à la fonction js qui charge toute mes modals

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <div>
    	<form method="POST" action="{{ path('message_maj_chat') }}">
    		<textarea name="content" class="form-control" tabindex="1" autofocus></textarea>
    		<input type="hidden" name="isoffer" value="1"/>
    		<input type="hidden" value="{{ id_client }}" name="client"/>
    		<label class="giveMeSpace">Choisir le produit concerné :</label>
    		<input class="form-control" name="product" id="searchProduct"/>
    		<div class="modal-footer">
            	<button type="submit" class="btn btn-primary">Envoyer</button>
    		</div>
    	</form>
    </div>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    $('a.btn-modal').click(function(){
    	var that = $(this);
    	$.get( $(this).attr('href'), function(htmlBack){
    		$('div.modal .modal-title').html(that.attr('data-title'));
    		$('div.modal .modal-body').html(htmlBack);
    		$('div.modal').modal('show');	
                    // Tentative de focus des textarea contenant tabindex="1"
    		console.log($('.modal-body [tabindex="1"]').attr('class'));
    		$('.modal-body [tabindex="1"]').val('va me pendre ! ').focus();
    		/**
    		 * Send modal form
    		 */ 
    		$('div.modal .modal-body form').submit(function(){
    			var that = $(this);
    			$.ajax({
    				method: "post",
    				url: that.attr('action'),
    				data: that.serialize(),
    				success: function(){
    					$('div.modal').modal('hide');
    					window.location.reload();
    				}
    			});
    			return false;
    		});
    	});
    	return false;
    });
    Le console.log me retourne bien la class du textarea soit "form-control", rempli bien la value "va me pendre ! " mais ne focus pas le textarea. Pourtant une fois la modal chargée, via la console de firefox la meme ligne met bien le textarea en focus...

  2. #2
    Membre chevronné
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Billets dans le blog
    1
    Par défaut
    Si je me souviens bien, les modals Bootstrap ont un événement 'shown', qui est appelé une fois la modal ouverte et les animations css terminées.

    Tu devrais te pencher la dessus je pense

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 13
    Par défaut
    Merci, mais comme dit dans mon premier post, le problème n'est pas le chargement de la modal, ni meme un problème lié à la détection de l'objet (textarea), puisque le console.log me retourne la class.

    La modal est crée dans mon layout, la fonction js se contente de récupérer l'url des boutons pour ouvrir les urls en ajax dans les modals.

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <div class="modal fade">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                    <h4 class="modal-title">Modal title</h4>
                </div>
                <div class="modal-body">
                </div>
                {# <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                    <button type="button" class="btn btn-primary">Save changes</button>
                 </div> #}
            </div><!-- /.modal-content -->
        </div><!-- /.modal-dialog -->
    </div><!-- /.modal -->


    Malgré tout j'ai tenté de l'ajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $(document).on('show.bs.modal', function (e) {
        console.log($('.modal-body [tabindex="1"]').attr('class'));
        $('.modal-body [tabindex="1"]').val('va me pendre ! ').focus();
    });
    Mais le résultat est le meme.

  4. #4
    Membre chevronné
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Billets dans le blog
    1
    Par défaut
    Après avoir lu la dernière version des Modals par Bootstrap, tu as deux events intéressant, le premier est toujours 'shown' et non 'show' (comme tu as fait l'erreur sur ton dernier post), la différence se fait dans le temps. L'autre est 'loaded' l'événement est déclenché lorsque le contenu est chargé.

    La logique veux qu'une fois ton contenu chargé tu puisse focus l'élément souhaité.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 13
    Par défaut
    En effet avec le shown.bs.modal ça fonctionne, je ne m'explique toujours pas pourquoi ça ne passe pas après le show, mais c'est good, merci

  6. #6
    Membre chevronné
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Billets dans le blog
    1
    Par défaut
    Pour information le show est appelé pour lancer l'ouverture, en gros il s'agit de l'event qui ouvre ta modal, il passe en premier et il est donc normal que tu ne puisse pas faire ce genre de manipulation avec cet event. Le shown lui est appelé lorsque le travail est terminé c'est a partir de lui qu'il faut travailler.

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

Discussions similaires

  1. Ouverture d'une modal bootstrap
    Par Jarell dans le forum jQuery
    Réponses: 0
    Dernier message: 30/05/2014, 14h51
  2. Comportement différent si modal bootstrap ouverte par onhashchange sur chrome > 34
    Par choubeu dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 29/05/2014, 10h23
  3. Formulaire et formulaire modal bootstrap
    Par MisterCh dans le forum Django
    Réponses: 0
    Dernier message: 25/12/2013, 12h16
  4. Affichage de quelques lettres dans un TextArea ou boite modale
    Par hamzawhy dans le forum Débuter avec Java
    Réponses: 8
    Dernier message: 14/02/2012, 22h08
  5. bootstrap-modal.js écrase les évènements jquery
    Par LhIaScZkTer dans le forum jQuery
    Réponses: 5
    Dernier message: 09/02/2012, 08h40

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