No início, eu tenho que dizer, eu não estou familiarizado com select2. trabalho apenas usado em tão apressadamente olhou sua documentação.
O ponto, o trabalho necessário para procurar por usuários com base no nome ou número de telefone do usuário, mas porque muitos usuários, a entrada de cada usuário não pode voltar para verificar novamente, é necessário usar minimumInputLength select2 fornecem controlado a partir de Especifica o caractere mínimo começou antes de enviar o pedido. Pervertido que parece, para o nome com o número de telefone não pode ser definido para o mesmo valor. É necessário fazer uma função minimumInputLength, para determinar dinamicamente o seu valor. E, no entanto minimumInputLength select2-se visto como um número, é preciso modificar o código-fonte do select2. Em seguida, falar sobre o que áreas mudaram. Há dois lugares defaults.js e minimumInpoutLength.js.
Deixe-me falar defaults.js, encontrar o código abaixo:
if (options.minimumInputLength> 0) {
options.dataAdapter = Utils.Decorate (
options.dataAdapter,
MinimumInputLength
);
}
Mudar isso para:
se (options.minimumInputLength) {
options.dataAdapter = Utils.Decorate (
options.dataAdapter,
MinimumInputLength
);
}
Este código faz-me um pouco surpreendido, mesmo com um modo de decorador, o código deve ter a oportunidade de lê-lo novamente select2, aprender sobre idéias de outras pessoas :)
Então minimumInputLength.js:
Encontrar consulta método, modificado como segue:
MinimumInputLength.prototype.query = função (decorado, params, chamada de retorno) {
params.term = params.term || '';
var minimumInputLength = 'função' typeof (this.minimumInputLength) === && this.minimumInputLength (params) || this.minimumInputLength;
if (params.term.length <minimumInputLength) {
this.trigger ( 'Resultados: mensagem', {
mensagem: 'inputTooShort',
args: {
mínima: minimumInputLength,
de entrada: params.term,
params: params
}
});
Retorna;
}
Decorated.call (isto, params, de retorno de chamada);
};