Au début, je dois dire, je ne suis pas familier avec select2. Tout travail utilisé dans la hâte a regardé sa documentation.
Le point, les travaux nécessaires pour rechercher des utilisateurs en fonction du nom ou le numéro de téléphone de l'utilisateur, mais parce que trop d'utilisateurs, ne peut pas revenir en arrière l'entrée de chaque utilisateur de vérifier à nouveau, il est nécessaire d'utiliser minimumInputLength Select2 permettent un contrôle de Indique le caractère minimal a commencé avant d'envoyer la demande. Pervertie il apparaît, le nom avec le numéro de téléphone ne peut pas être réglé sur la même valeur. Il est nécessaire de faire une fonction minimumInputLength, pour déterminer dynamiquement sa valeur. Et pourtant minimumInputLength select2 lui-même vu comme un nombre, nous devons modifier le code source du select2. Ensuite, parler de ce que les régions ont changé. Il y a deux endroits defaults.js et minimumInpoutLength.js.
Permettez-moi de parler defaults.js, trouver le code ci-dessous:
if (options.minimumInputLength> 0) {
options.dataAdapter = Utils.Decorate (
options.dataAdapter,
MinimumInputLength
);
}
Un changement qui à:
if (options.minimumInputLength) {
options.dataAdapter = Utils.Decorate (
options.dataAdapter,
MinimumInputLength
);
}
Ce code me fait un peu surpris, même avec un mode décorateur, le code doit saisir l'occasion de le lire à nouveau select2, en savoir plus sur les idées des autres :)
Puis minimumInputLength.js:
Trouver requête méthode modifiée comme suit:
MinimumInputLength.prototype.query = function (décorée, params, rappel) {
params.term = params.term || '';
var minimumInputLength = typeof (this.minimumInputLength) === 'fonction' && this.minimumInputLength (params) || this.minimumInputLength;
si (params.term.length <minimumInputLength) {
this.trigger ( 'résultats: message', {
message: 'inputTooShort',
args: {
minimum: minimumInputLength,
entrée: params.term,
params: params
}
});
revenir;
}
Decorated.call (cela, params, rappel);
};