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

JavaScript Discussion :

Fonction supprimant les évènements d'un select


Sujet :

JavaScript

  1. #1
    Membre régulier
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2014
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2014
    Messages : 89
    Points : 83
    Points
    83
    Par défaut Fonction supprimant les évènements d'un select
    Bonjour
    Après bien des recherches, je suis arrivée à sérier mon problème pour pouvoir vous le soumettre..
    Il faut savoir que je développe dans le cadre d'un logiciel libre qui a des outils.
    Je veux pouvoir proposer une liste de choix permettant, en saisissant 2,3 4 lettres, de restreindre la liste aux items possédant cette séquence de lettres. ça, c'est ce que fait la fonction ci-dessous, provenant du cœur du logiciel.
    Mais je veux aussi pouvoir activer des fonctions sur changement de choix (par exemple afficher le téléphone et le mail du tiers choisi dans la liste)
    Je viens de prouver que la fonction ci-dessous m'empêche d'activer les événements 'onchange','onclick'.
    Quelqu'un saurait-il me dire pourquoi?

    Merci Beaucoup
    Claude

    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
     
    (function( $ ) {
    	$.widget( "ui.combobox", {
    		options: {
    			minLengthToAutocomplete: 0
    		},
            _create: function() {
            	var savMinLengthToAutocomplete = this.options.minLengthToAutocomplete;
                var self = this,
                    select = this.element.hide(),
                    selected = select.children( ":selected" ),
                    value = selected.val() ? selected.text() : "";
                var input = this.input = $( "<input>" )
                    .insertAfter( select )
                    .val( value )
                    .attr('id', 'inputautocomplete'+select.attr('id'))
                    .autocomplete({
                        delay: 0,
                        minLength: this.options.minLengthToAutocomplete,
                        source: function( request, response ) {
                            var matcher = new RegExp( $.ui.autocomplete.escapeRegex(request.term), "i" );
                            response( select.children( "option:enabled" ).map(function() {
                                var text = $( this ).text();
                                if ( this.value && ( !request.term || matcher.test(text) ) )
                                    return {
                                        label: text.replace(
                                            new RegExp(
                                                "(?![^&;]+;)(?!<[^<>]*)(" +
                                                $.ui.autocomplete.escapeRegex(request.term) +
                                                ")(?![^<>]*>)(?![^&;]+;)", "gi"
                                            ), "<strong>$1</strong>" ),
                                        value: text,
                                        option: this
                                    };
                            }) );
                        },
                        select: function( event, ui ) {
                            ui.item.option.selected = true;
                            self._trigger( "selected", event, {
                                item: ui.item.option
                            });
                        },
                        change: function( event, ui ) {
                            if ( !ui.item ) {
                                var matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( $(this).val() ) + "$", "i" ),
                                    valid = false;
                                select.children( "option" ).each(function() {
                                    if ( $( this ).text().match( matcher ) ) {
                                        this.selected = valid = true;
                                        return false;
                                    }
                                });
                                if ( !valid ) {
                                    // remove invalid value, as it didnt match anything
                                	$( this ).val( "" );
                                    select.val( "" );
                                    input.data( "autocomplete" ).term = "";
                                    return false;
                                }
                            }
                        }
                    })
                    .addClass( "ui-widget ui-widget-content ui-corner-left dolibarrcombobox" );
     
                input.data( "autocomplete" )._renderItem = function( ul, item ) {
                    return $( "<li></li>" )
                        .data( "item.autocomplete", item )
                        .append( "<a>" + item.label + "</a>" )
                        .appendTo( ul );
                };
     
                this.button = $( "<button type=\'button\'> </button>" )
                    .attr( "tabIndex", -1 )
                    .attr( "title", "Show All Items" )
                    .insertAfter( input )
                    .button({
                        icons: {
                            primary: "ui-icon-triangle-1-s"
                        },
                        text: false
                    })
                    .removeClass( "ui-corner-all" )
                    .addClass( "ui-corner-right ui-button-icon" )
                    .click(function() {
                        // close if already visible
                        if ( input.autocomplete( "widget" ).is( ":visible" ) ) {
                            input.autocomplete( "close" );
                            return;
                        }
     
                        // pass empty string as value to search for, displaying all results
                        input.autocomplete({ minLength: 0 });
                        input.autocomplete( "search", "" );
                        input.autocomplete({ minLength: savMinLengthToAutocomplete });
                        input.focus();
                    });
            },
     
            destroy: function() {
                this.input.remove();
                this.button.remove();
                this.element.show();
                $.Widget.prototype.destroy.call( this );
            }
        });
    })( jQuery );

  2. #2
    Membre régulier
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2014
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2014
    Messages : 89
    Points : 83
    Points
    83
    Par défaut Substitution
    Bonsoir
    N'ayant pas eu de réponse, et incapable de comprendre ce code, j'ai décidé de prendre un autre procédé.
    La combo-liste reste une combo-liste sans évènement, me permettant de choisir le tiers.
    Une fois le choix fait, on clique sur un petit bouton qui possède un 'onchange' sur une fonction qui m'affiche ce fameux téléphone
    Claude

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

Discussions similaires

  1. Supprimer les évènements associés à un plugin
    Par Armaldo dans le forum jQuery
    Réponses: 2
    Dernier message: 06/12/2014, 18h30
  2. Supprimer les doublons d'un SELECT sur certaines colonnes
    Par Logarithmix dans le forum Requêtes
    Réponses: 1
    Dernier message: 01/10/2012, 11h34
  3. [DOM] Appel de fonction dans les événements
    Par SolidWorm dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 26/09/2007, 17h59
  4. Fonction qui supprime les espaces
    Par Faith's Fall dans le forum C++Builder
    Réponses: 4
    Dernier message: 03/02/2006, 11h29

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