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

Composants graphiques Android Discussion :

WebView JQueryUI et autocompletion


Sujet :

Composants graphiques Android

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 13
    Points : 10
    Points
    10
    Par défaut WebView JQueryUI et autocompletion
    Bonjour,

    Je travail sur un projet d'application Hybride sur Android (pour le moment).
    En gros, j'ai une application créée en HTML5 et j'utilise une WebView pour l'intégrer dans une application Android.

    J'ai une page d'authentification simple : login + mot de passe, et le widget d'auto-completion de JQueryUI activé sur le champ login (qui est un input classique).

    L'auto-complétion fonctionne très bien sur desktop, et sur Android... presque.
    Quand les choix de l'auto-complétion s'affichent, si j'en sélectionne un qui se trouve au dessus du champ de mot de passe, l'application réagit comme si j'avais sélectionné le choix dans la liste ET cliqué dans le champ password.
    Du coup, mon choix d'auto-complétion se fait bien et le curseur se positionne dans le champ login, mais comme le champ mot de passe à été sélectionné aussi, je retrouve mon curseur également dedans. (En gros je me retrouve avec 1 curseur dans chaque input, et si j'écris quelque chose, les 2 se remplissent en même temps)

    Quelqu'un à déjà eu ce genre de problème ?

    Merci !

  2. #2
    Membre à l'essai
    Inscrit en
    Mai 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    J'ai fait une pseudo résolution en utilisant les deux méthodes "open" et "close" de l’auto-complétion.
    Dans open, j'ajoute l'attribut "disabled" au champ password et dans close je supprime cet attribut.

    Ça me plait moyen, mais impossible de trouver la cause du problème.

  3. #3
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Tu dois avoir un gros souci car normalement un seul widget peut avoir le focus ?

    J'aimerais bien voir ce que tu as fait
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Je ne peux pas mettre mon code entièrement, mais voici un aperçu :

    L'appli android ne possède qu'une WebView (j'ai une classe qui étend WebView) qui ne contient pas grand chose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    WebSettings webSettings = getSettings();
    webSettings.setJavaScriptEnabled(true);
    webSettings.setSavePassword(false);
    addJavascriptInterface(new WNNativeInterface(context, this), "NativeMethodProvider");
     
    loadUrl(historyMap.get(0)); // la première page à charger
    Et la page HTML en question contient ça :
    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
    29
    30
    31
     
    <body>
    	<div id="container">
    		<header role="banner">
    			<h1>...</h1>
    		</header>
    		<hr />
     
    		<div id="wrapper">
    			<div id="main" role="main">
    				<form id="login" class="k-login" method="post" action="liste_rdv.html">
    					<fieldset>
    						<legend>Identification</legend>
    						<p><label for="userid-tag">Identifiant</label> 
    							<input type="text" id="userid-tag" name="userid-tag"/>
    						</p>
    						<p><label for="password-tag">Mot de passe</label> 
    							<input type="password" id="password-tag" name="password-tag" title="Le mot de passe doit présenter plus de huit caractères et au moins un caractère spécial" /> 
    							<span class="lost-password"><a href="#">Mot de passe oublié ?</a></span>
    						</p>
    						<p><input type="submit" value="ok" /></p>
    					</fieldset>
    				</form>
    			</div><!-- /main -->
    		</div><!-- /wrapper -->
     
    		<footer role="contentinfo">
    			<p class="k-copyright">...</p>
    		</footer>
    	</div>
    </body>
    Et le code JS qui permet d'activer l'auto-complétion sur l'élément "login" (avec la bidouille des méthodes "open" et "close" pour "corriger" le problème):
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    function enableAutoComplete(/*jquery object*/ input, /*String*/ type) {
    	/**
            * Enable autocomplete method.
            * open and close methods are used for prevent bug when an item is
            * selected above password input.
            */
    	input.autocomplete({
    		create : function(event, ui) {
    			/* Used because css was scoped with "autocompletion" class */
    			$('.ui-autocomplete').wrap('<div class="autocompletion"></div>');
    		},
     
    		open : function(event, ui) {
    			var passwordInput = $('#password-tag');
    			if (passwordInput) {
    				passwordInput.attr('disabled', 'disabled');
    			}
    		},
     
    		close : function(event, ui) {
    			var passwordInput = $('#password-tag');
    			if (passwordInput) {
    				passwordInput.removeAttr('disabled');
    			}
    		}
    	});
     
    	/* New source for autocompletion when keyup */
    	input.keyup(function(e) {
    		var userArray = new Array();
     
    		try {
    			var value = input.val();
    			var users;
    			if (value != '') {
    				users = NativeMethodProvider.getAutoCompletionData(value, type);
    			}
     
    			var usersObject = JSON.parse(users);
     
    			for (var key in usersObject) {
    				var value = usersObject[key];
    				userArray.push(value);
    			}
    		} catch(errback) {
                         ...
    		}
     
    		input.autocomplete("option", "source", userArray);
    	});
    };
    L'objet "NativeMethodProvider" dans le JS est une classe Java qui à été wrappée dans la WebView à la création de celle-ci grâce à "addJavascriptInterface(new WNNativeInterface(context, this), "NativeMethodProvider");", et qui permet tout simplement d'utiliser les méthodes de la classe Java depuis le JavaScript.
    Dans l'exemple, afin de récupérer des données stockées dans une BDD gérée par du code Android (et non web).

Discussions similaires

  1. [3.2M4] Petits freezes lors de l'autocomplete
    Par Glob dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 28/12/2005, 11h41
  2. AutoComplete un peu spécial
    Par kobe dans le forum Composants VCL
    Réponses: 7
    Dernier message: 21/07/2005, 11h08
  3. Autocompletion de mot dans un trichedit
    Par mteirek_m dans le forum Composants VCL
    Réponses: 3
    Dernier message: 01/06/2005, 20h22
  4. [kdevelop] autocompletion
    Par hiko-seijuro dans le forum Environnement de Développement Intégré (EDI)
    Réponses: 2
    Dernier message: 13/11/2004, 13h57
  5. [Dbgrid] Picklist & Autocomplete ?
    Par dudux dans le forum Bases de données
    Réponses: 7
    Dernier message: 11/07/2004, 10h32

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