Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera, é o seguinte
eu fiz um ajax para dar sugestões de nomes de trabalhadores digitados em um campo de texto, beleza
só que ao utilizar o Internet 6, o sugestão não funciona corretamente, ele só efetua a busca a partir da primeira letra, ou seja, qualquer outra informação que você digita, ele não filtra,
ao fazer a "debugação" do meu Javascript, notei que na minha função AtualizaDiv (como o nome já diz, ela atualiza a div que é passada por parametro) ao utilizar o metodo onreadystatechange ele passa direto, sendo assim, não carrega os filtros seguintes
segue abaixo as funções que utilizo
//TODOS OS alerts ESTÃO COMENTADOS, POIS UTILIZEI-OS SOMENTE PARA SABER A ORDEM DE PROCESSAMENTO DO PROGRAMA
function openAjax() {
var ajax;
try{
ajax = new XMLHttpRequest();
// alert("Entrou XMLHTTPREQUEST");
}
catch(e)
{
var axO=['Msxml2.XMLHTTP','Msxml2.XMLHTTP.3.0', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.4.0' ];
for(var i=0;i<axO.length;i++){
try{
//alert("Entrou TRY - "+axO[i]);
ajax = new ActiveXObject(axO[i]);
break;
}catch(e){
//alert("Entrou Catch"+e);
}
}
}
return ajax;
}
var request = openAjax(); //Recebe o Objeto AJAX que é retornado da Função openAjax()
//AS FUNÇÕES DENTRO DOS COMENTÁRIOS "++++..." SERVEM SOMENTE PARA EFETUAR O SUGEST
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
function OrdenarTrab(ord){
//função para fazer ordenação da lista de colaboradores
//o parametro recebe a value da opção selecionada pelo usuario
var cpo = "";
if (ord == 'C'){
cpo = " ORDER BY C5.C_COD_COLABORADOR";
}
if (ord == 'F'){
cpo = " ORDER BY C7.C_DESC_FUNCAO";
}
if (ord == 'N'){
cpo = " ORDER BY C5.C_NOME_COLABORADOR";
}
return cpo;
}
function FiltrarTrab(exb){ var sql = "";
if (exb == "TA")
{//MOSTRAR TODOS OS TRAVALHADORES ATIVOS
sql = "AND C5.C_DATA_DEMISSAO_COLABORADOR IS NULL";
}
if (exb == "TD")
{//MOSTRAR TODOS OS TRABALHADORES DEMITIDOS
sql = "AND C5.C_DATA_DEMISSAO_COLABORADOR IS NOT NULL";
}
return sql;
}
function SugerirNomes(str, filtro, ordem){//O segundo parametro recebe o valor do return da função FiltratTrab para poder passar para a url que abrirá a página nova
//O terceiro parametro recebe o valor do return da função OrdenarTrab para o usuário definir em que ordem deseja enxergar da forma que desejar
var filtro = FiltrarTrab(filtro);
var ordem = OrdenarTrab(ordem);
var string = str;
if(string.length == 0){
document.getElementById("sugest").innerHTML = 'Digite o nome do Trabalhador no campo de pesquisa';
return 0;
}
var url = "../seesmt/ajax/consultarcolab.php?str="+string+"&fil="+filtro+"&ord="+ordem;
alert("Antes Atualiza");
AtualizaDiv(url, "sugest","");
alert("Depois Atualiza");
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
function AtualizaDiv(url,id, showload){
alert("Antes do request");
request.onreadystatechange = function(){ //NA PRIMEIRA EXECUÇÃO, ESTA LINHA EXECUTA TODA A FUNÇÃO SEM PROBLEMAS,
//alert("Entrou no function do request"); //MAS DA SEGUNDA VEZ EM DIANTE, O SCRIPT PULA TODA ESSA FUNÇÃO E NÃO ATUALIZA NADA
if(showload == ""){
// alert("Entrou normal no primeiro if");
if(request.readyState == 4){
//alert("Entrou normal no segundo if");
//alert("ENTROU 4 "+request.responseText);
document.getElementById(id).innerHTML = request.responseText;
}
}else if(showload=="mostrar"){
if(request.readyState == 1){
document.getElementById(id).innerHTML = "<div align=\"center\"><img src=\"../imagens/18.gif\"></div>";
}
if(request.readyState == 4){ //alert("Entrou 1-4 "+request.responseText);
document.getElementById(id).innerHTML = request.responseText;
}
}
};
// alert("Depois do request");
request.open('GET', url, true);
// alert("Antes do SetRequest");
request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=iso-8859-1");
// alert("Antes do request.send");
request.send();
}
BOM, É ISSO, SE FICOU DIFICIL O ENTENDIMENTO, ME ADD NO MSN PARA CONVERSAR MELHOR: herberth.nilsen@hotmail.com
Obrigado desde já
abs a todos
Carregando comentários...