9
votes

Boîte de dialogue MODAL JQUERY UI, définissez la mise au point sur le premier élément de formulaire

J'utilise actuellement la boîte modale JQuery Ui.

Je me demande comment je peux définir la mise au point sur le premier élément de forme de la boîte modale lors de l'ouverture de la boîte de dialogue, je pense que cela se produise par défaut mais pour une raison quelconque, ce n'est pas le cas.

Comment puis-je définir l'interface utilisateur JQuery pour vous concentrer sur le premier élément de forme lors de l'ouverture?

Voici l'URL à la page avec la boîte de dialogue modale Cliquez simplement sur le lien Afficher la boîte de dialogue. sur cette page


0 commentaires

8 Réponses :


17
votes

Vous pouvez utiliser l'événement ouvert dans la boîte de dialogue JQuery UI et définir l'accent sur l'ID d'entrée. Vous pouvez faire quelque chose comme ça. XXX


0 commentaires

10
votes

Ajoutez une fonction Lié à l'événement affiché, puis définissez la mise au point xxx


0 commentaires

3
votes

Par défaut, le modal de l'interface utilisateur JQuery se concentrera sur le premier champ de saisie dans le modal.

Si, pour une raison quelconque, le premier champ de saisie n'a pas été mis à jour, vous pouvez ajouter l'attribut d'entrée autofocus strong> sur le premier champ de saisie: p> xxx pré>

Ou si vous avez besoin du deuxième ou d'un autre champ d'entrée pour se concentrer à la place, appliquez l'attribut d'entrée autofocus strong> au deuxième champ d'entrée: p>

<input type="text" name="date" value="">
<input type="text" name="phone" value="" autofocus>


5 commentaires

J'ai essayé cela et l'accent a effectivement atterri sur l'élément que j'ai ajouté de la mise au point automatique. Cependant, une seconde plus tard, l'accent a disparu ...


Votre ensemble DocType est-il défini pour HTML5 . .. Avez-vous un autre code JS donnant l'accent sur votre page? Utilisez-vous également la dernière version de la boîte de dialogue JQuery et JQuery UI?


Merci pour la réponse, à la fin, je devais me concentrer à l'aide du rappel d'événement "montré.bs.modal" pour ajouter l'accent à l'élément. $ ('# login-modal'). Sur ("montré.bs.modal ', fonction () {$ (" # user_session_email "). Focus ();});


Cela fonctionne bien pour moi. J'aime des exemples comme celui-ci, propre, simple et travail pour la première fois. Merci bourgeon :)


Pas de soucis @ user985197, heureux d'aider!



0
votes

0 commentaires

2
votes

Essayez cela, concentrez-vous sur JQUERY MODAL:

setTimeout(function () { $('#cntrlId').focus(); }, 1);


1 commentaires

Dû utiliser celui-ci pour en utilisant plus d'un modal, l'un après l'autre. Appelez la boîte de dialogue, puis le délai d'attente



6
votes

Merci pour la réponse, à la fin, je devais me concentrer à l'aide du rappel d'événement "montré.bs.modal" pour ajouter l'accent à l'élément.

    $('#login-modal').on('shown.bs.modal', function () {
        $("#user_session_email").focus();
    });


2 commentaires

C'est une boîte de dialogue Bootstrap, pas une boîte de dialogue UI de JQuery régulière.


Merci pour cela pour une référence bootstrap, pour une raison quelconque, cela doit être fait sur l'événement montré. Il ne fixera pas la mise au point si défini implicitement par exemple sur l'événement de clic qui ouvre le modal.



0
votes

Ajouter une fonction sur la boîte de dialogue Ouvrir

$("#dialogMensaje").dialog({width: 600,
                            title: "Notificación",
                            modal: true,
                            buttons: {
                                "Enviar": function() {
                                    $(this).dialog("close");
                                }
                            },
                            open: function() {
                                setTimeout(function() {
                                    $('#txt').focus();
                                }, 420);
                            }
                        });


0 commentaires

0
votes

Il faut environ 460ms pour montrer complètement la boîte de dialogue, il est donc préférable d'utiliser

SETTimeOUT, 500 xxx


0 commentaires