I want to dynamically change the minLength
attribute of the jQuery Autocomplete library .
This need is due to the fact that if the user performs the search by the name or email of the client the minimum to start a search and three characters. If you enter the phone number, we will limit the search to five.
Below is the code in which I want to implement the solution:
$("#search-customer").on('keyup', function() {
var param = $(this).val();
//Verifica se a quantidade de caracteres no input é de 1 elemento,
//pois com essa informação podemos aplicar a mascara de telefone ou não.
if(param.length <= 1){
$("#search-customer").unmask();
if($.isNumeric(param)){
$("#search-customer").mask('00 00000-0000');
}else{
$("#search-customer").unmask();
}
}
//Verificamos se o que for digitado é numero e qual a quantidade
//para dinamicamente setar o minimo de caracteres no plugin
var number = param.replace(/\s+/g, '');
if($.isNumeric(number) && number.length >= 5){
$("#search-customer").autocomplete("option", "minLength", 5);
}else if(!$.isNumeric(number) && number.length >= 3){
$("#search-customer").autocomplete("option", "minLength", 3);
}
});
/**
* AutoComplete na busca de clientes no cadastro de atendimento.
*/
$("#search-customer").autocomplete({
width: 300,
max: 10,
delay: 100,
minLength: 0,
autoFocus: true,
cacheLength: 1,
scroll: true,
highlight: false,
source: function(request, response) {
//Realiza a busca no back-end
},
// Seleciona um cliente encontrado.
select: function(event, ui) {
if (ui.item.idCustomer > 0) {
// Verifica se o cliente possui atendimento disponível e não deixa seguir o atendimento.
if (ui.item.hasAvailableService == true) {
bootbox.alert("Alerta de prevenção de duplicidades: identificamos a existência de um atendimento disponível em nome deste cliente. " +
"Procure por este cliente na lista de \"atendimentos disponíveis\" e clique no botão \"obter\" para abrir este atendimento.");
} else {
window.location = "service/edit/" + ui.item.idCustomer;
}
}
}
});