Bonjour

J'ai un ptit problème concernant l'autocompletion et le textbox associé
sur le textbox j'ai un onkeypress qui pointe vers une fonction javascript et le onitemselected du autoCompleteExtender pointe vers la meme.

quand j'effectue une recherche et que je navigue avec les flèches sur les resultats de l'autocompletion et que j'appuie sur Entrée, il va m'effectuer la fonction plusieurs.
En effet l'action Entrée sur la textbox et l'action Entrée sur l'autocompletion ne font pas la même action et cela est gérer dans le javascript.
Mais comme il passe 2 voire 3 fois de suite sur la fonction cela perturbe tout.

J'ai essayé les stoppropagation, preventdefault, return false mais ça ne marche pas, surtout sur firefox. sur Chrome il passe aussi 2 fois dedans mais dans un autre sens, ce qui donne l'impression de marcher.


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
53
54
 
<script type="text/javascript">
        function search(sender, e) {
 
            if (e == null) {
                window.location = "/test.aspx?id=1&search=" + document.getElementById('tbox').value;
                //if (navigator.appName != "Microsoft Internet Explorer") CancelEvent(event);
            }
            else if (!isNaN(e._value) && e != null) {
                document.getElementById('HiddenField1').value = e._value;
                window.location = "/test.aspx?id=2&search=" + document.getElementById('HiddenField1').value;
                //if (navigator.appName != "Microsoft Internet Explorer") CancelEvent(event);
            }
 
        }
 
        function CancelEvent(e) {
            if (e.stopPropagation) {
                e.stopPropagation();
                e.preventDefault();
                e.stopImmediatePropagation();
                return false;
            }
            if (window.event) {
                window.event.cancelBubble = true;
                window.event.returnValue = false;
                return;
            }
        }
 
    </script>
 
 
 
 
 
 
<asp:TextBox ID="tbox" runat="server" Width="400px" onkeypress="if(event.keyCode==13){search(event);return false;}" ClientIDMode="Static" ></asp:TextBox>
 
<ajaxToolkit:AutoCompleteExtender 
                    ID="ace" 
                    runat="server" 
                    TargetControlID="tbox" 
                    ServicePath="TestAutoCompletion2.asmx" 
                    ServiceMethod="GetCompletionNom" 
                    MinimumPrefixLength="2" 
                    CompletionInterval="50" 
                    EnableCaching="true"  
                    CompletionSetCount="10"
                    CompletionListCssClass = "ace_Liste" 
                    CompletionListItemCssClass = "ace_ListeItems" 
                    CompletionListHighlightedItemCssClass = "ace_HighlightedListItem" 
                    OnClientItemSelected = "search">
    </ajaxToolkit:AutoCompleteExtender>

Comment faire pour empecher cela ?

Merci