Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde... estou com o seguinte problema
peguei este auto complete que esta funcionando muito bem
ele funciona assim.. eu começo a digitar ele chama o arquivo busca e me da as listas de nomes.. então eu clico em cima do nome e ele faz um auto complete
tudo ok
mais quando eu digito um nome e nao clico em cima dele( mesmo que o nome exista) ele nao faz o Callback1
bom... quero usar esta funçao para digiar um serial de um dispositivo ou leitor de codigo de barras
e quando eu clicar fora do campo... ele preencher os outros campos com Callback1
Lembrando que tudo funciona se eu clicar em cima do nome para selecionar...
mais eu usando um leitor de codigo de barras... vai ter que funcionar com um tab ou ao sair do campo
deu pra entender ???????
<script type="text/javascript">
$(document).ready(function()
{
$('#cod_b_mod').simpleAutoComplete('pecas/localizar.php',{
autoCompleteClassName: 'autocomplete',
selectedClassName: 'sel',
attrCallBack: 'rel',
identifier: 'codigobarras'
},Callback1);
});
function Callback1( par )
{
$("#modelo").val( par[0] );
$("#obs").val( par[1] );
$("#serial0").val( par[2] );
$("#capacidade").val( par[3] );
$("#fabricante").val( par[4] );
$("#interfac").val( par[5] );
}
</script>
<input name="cod_b_mod" type="text" id="cod_b_mod" style="width:150px;" onkeypress ="Pd_maiusculo(this);" onkeydown="javascript:if(event.keyCode == 13){ return false; }"/>>
cara.. externamente não tem muito oq fazer.
dá uma olhada na documentação e no código desse plugin: simpleAutoComplete
lá onde ele dispara com o onclick, tem q fazer disparar no onblur também.
Ajuda ai....
(function($){
$.fn.extend(
{
simpleAutoComplete: function( page, options, callback )
{
if(typeof(page) == "undefined" )
{
alert("simpleAutoComplete: Você deve especificar a página que processará a consulta.");
}
var classAC = 'autocomplete';
var selClass = 'sel';
var attrCB = 'rel';
var thisElement = $(this);
$(":not(div." + classAC + ")").click(function(){
$("div." + classAC).remove();
});
thisElement.attr("autocomplete","off");
thisElement.keyup(function( ev )
{
var getOptions = { query: thisElement.val() }
if( typeof(options) == "object" )
{
classAC = typeof( options.autoCompleteClassName ) != "undefined" ? options.autoCompleteClassName : classAC;
selClass = typeof( options.selectedClassName ) != "undefined" ? options.selectedClassName : selClass;
attrCB = typeof( options.attrCallBack ) != "undefined" ? options.attrCallBack : attrCB;
if( typeof( options.identifier ) == "string" )
getOptions.identifier = options.identifier;
if( typeof( options.extraParamFromInput ) != "undefined" )
getOptions.extraParam = $( options.extraParamFromInput ).val();
}
kc = ( ( typeof( ev.charCode ) == 'undefined' || ev.charCode === 0 ) ? ev.keyCode : ev.charCode );
key = String.fromCharCode(kc);
//console.log(kc, key, ev );
if (kc == 27)
{
$('div.' + classAC).remove();
}
if (kc == 13)
{
$('div.' + classAC + ' li.' + selClass).trigger('click');
}
if (key.match(/[a-zA-Z0-9_\- ]/) || kc == 8 || kc == 46)
{
$.get(page, getOptions, function(r)
{
$('div.' + classAC).remove();
autoCompleteList = $('<div>').addClass(classAC).html(r);
if (r != '')
{
autoCompleteList.insertAfter(thisElement);
var position = thisElement.position();
var height = thisElement.height();
var width = thisElement.width();
$('div.' + classAC).css({
'top': ( height + position.top + 6 ) + 'px',
'left': ( position.left )+'px',
'margin': '0px'
});
$('div.' + classAC + ' ul').css({
'margin-left': '0px'
});
$('div.' + classAC + ' li').each(function( n, el )
{
el = $(el);
el.mouseenter(function(){
$('div.' + classAC + ' li.' + selClass).removeClass(selClass);
$(this).addClass(selClass);
});
el.click(function()
{
thisElement.attr('value', el.text());
if( typeof( callback ) == "function" )
callback( el.attr(attrCB).split('|') );
$('div.' + classAC).remove();
thisElement.focus();
});
});
}
});
}
if (kc == 38 || kc == 40){
if ($('div.' + classAC + ' li.' + selClass).length == 0)
{
if (kc == 38)
{
$($('div.' + classAC + ' li')[$('div.' + classAC + ' li').length - 1]).addClass(selClass);
} else {
$($('div.' + classAC + ' li')[0]).addClass(selClass);
}
}
else
{
sel = false;
$('div.' + classAC + ' li').each(function(n, el)
{
el = $(el);
if ( !sel && el.hasClass(selClass) )
{
el.removeClass(selClass);
$($('div.' + classAC + ' li')[(kc == 38 ? (n - 1) : (n + 1))]).addClass(selClass);
sel = true;
}
});
}
}
if (thisElement.val() == '')
{
$('div.' + classAC).remove();
}
});
}
});
})(jQuery);
cara.. externamente não tem muito oq fazer.
dá uma olhada na documentação e no código desse plugin: simpleAutoComplete
lá onde ele dispara com o onclick, tem q fazer disparar no onblur também.