Já que me tornei um estudante de JavaScript, tenho postado constantemente para resolver algumas dúvidas do que estou aprendendo e por isso estou voltando a postar hoje.
O programa é bem simples(espero que o problema também seja :blush: ). Tenho uma página em html que contém apenas uma tag select de estados do Brasil e que, quando clico em um deles é mostrado para mim um valor de moeda logo à direita. O meu problema é que a função funciona normalmente no Intenet Explorer, mas quando eu executo a página no Firefox, tenho sempre de apertar depois a tecla TAB, para aí sim serem mostrados os valores referentes a cada estado. Mesmo eu clicando nos nomes dos estados, não rola, só depois de pressionar TAB.
Tenho 2 arquivos em javascript, 1 em html e 1 em php. Imagino que a função responsável para buscar o valor(value) do campo select do html esteja no arquivo exemplo9.js, linha 3, que se não me engano deve ser a função getElementById.
O que fazer para que o Firefox redirecione o seu foco para dentro do select logo na primeira execução da página?
window.onblur = function()
{
var estado = document.getElementById("estado");
estado.onchange = function()
{
exibeFrete(estado);
}
}
function exibeFrete(estado)
{
if(estado == null)
{
return;
}
selecionado = estado.options[estado.selectedIndex].value;
var url="exemplo9.php?estado="+encodeURIComponent(selecionado);
requisicaoHTTP("GET",url,true);
}
function trataDados()
{
var info = ajax.responseText; // obtém a resposta como string
var resposta = document.getElementById("frete");
resposta.innerHTML = info;
}
bibliotecaAjax.js
var ajax;
var dadosUsuario;
//------------- cria o objeto e faz a requisição ------------
function requisicaoHTTP(tipo,url,assinc)
{
if(window.XMLHttpRequest)
{
ajax = new XMLHttpRequest(); // Mozilla, Safari,...
}
else
if(window.ActiveXObject) //IE
{
ajax = new ActiveXObject("Msxml2.XMLHTTP");
if(!ajax)
{
ajax = new ActiveXObject("Microsoft.XMLHTTP");
}
}
if(ajax) // iniciou com sucesso
{
iniciaRequisicao(tipo,url,assinc);
}
else
{
alert("Seu navegador não pussui suporte a essa aplicação!");
}
}
//------------- Inicializa o objeto criado e envia os dados (se existirem) -----
function iniciaRequisicao(tipo,url,bool)
{
ajax.onreadystatechange = trataResposta;
ajax.open(tipo,url,bool);
if(window.XMLHttpRequest)
{
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
ajax.overrideMimeType("text/XML"); /* usado somente no Mozilla */
}
else
{
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
}
ajax.send(dadosUsuario);
}
// ------------ Inicia requisição com envio de dados -------------
function enviaDados(url)
{
criaQueryString();
requisicaoHTTP("POST",url,true);
}
// ------------ Cria a string a ser enviada, formato campo1 = valor1&campo2=valor2... -------
function criaQueryString()
{
dadosUsuario="";
var frm = document.forms[0];
var numElementos = frm.elements.length;
for(var i = 0; i < numElementos; i++)
{
if(i < numElementos-1)
{
dadosUsuario += frm.elements[i].name+"=" + encodeURIComponent(frm.elements[i].value)+"&";
}
else
{
dadosUsuario += frm.elements[i].name+"=" + encodeURIComponent(frm.elements[i].value);
}
}
}
// ------------ Trata a resposta do servidor ---------------
function trataResposta()
{
if(ajax.readyState == 4)
{
if(ajax.status == 200)
{
trataDados(); // criar essa função no seu programa
}
else
{
alert("Problema na comunicação com o objeto XMLHttpRequest");
}
}
}
Pergunta
Paulada
OLa a todos!
Boa tarde
Já que me tornei um estudante de JavaScript, tenho postado constantemente para resolver algumas dúvidas do que estou aprendendo e por isso estou voltando a postar hoje.
O programa é bem simples(espero que o problema também seja :blush: ). Tenho uma página em html que contém apenas uma tag select de estados do Brasil e que, quando clico em um deles é mostrado para mim um valor de moeda logo à direita. O meu problema é que a função funciona normalmente no Intenet Explorer, mas quando eu executo a página no Firefox, tenho sempre de apertar depois a tecla TAB, para aí sim serem mostrados os valores referentes a cada estado. Mesmo eu clicando nos nomes dos estados, não rola, só depois de pressionar TAB.
Tenho 2 arquivos em javascript, 1 em html e 1 em php. Imagino que a função responsável para buscar o valor(value) do campo select do html esteja no arquivo exemplo9.js, linha 3, que se não me engano deve ser a função getElementById.
O que fazer para que o Firefox redirecione o seu foco para dentro do select logo na primeira execução da página?
exemplo9.html
exemplo9.jswindow.onblur = function() { var estado = document.getElementById("estado"); estado.onchange = function() { exibeFrete(estado); } } function exibeFrete(estado) { if(estado == null) { return; } selecionado = estado.options[estado.selectedIndex].value; var url="exemplo9.php?estado="+encodeURIComponent(selecionado); requisicaoHTTP("GET",url,true); } function trataDados() { var info = ajax.responseText; // obtém a resposta como string var resposta = document.getElementById("frete"); resposta.innerHTML = info; }bibliotecaAjax.jsvar ajax; var dadosUsuario; //------------- cria o objeto e faz a requisição ------------ function requisicaoHTTP(tipo,url,assinc) { if(window.XMLHttpRequest) { ajax = new XMLHttpRequest(); // Mozilla, Safari,... } else if(window.ActiveXObject) //IE { ajax = new ActiveXObject("Msxml2.XMLHTTP"); if(!ajax) { ajax = new ActiveXObject("Microsoft.XMLHTTP"); } } if(ajax) // iniciou com sucesso { iniciaRequisicao(tipo,url,assinc); } else { alert("Seu navegador não pussui suporte a essa aplicação!"); } } //------------- Inicializa o objeto criado e envia os dados (se existirem) ----- function iniciaRequisicao(tipo,url,bool) { ajax.onreadystatechange = trataResposta; ajax.open(tipo,url,bool); if(window.XMLHttpRequest) { ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8"); ajax.overrideMimeType("text/XML"); /* usado somente no Mozilla */ } else { ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8"); } ajax.send(dadosUsuario); } // ------------ Inicia requisição com envio de dados ------------- function enviaDados(url) { criaQueryString(); requisicaoHTTP("POST",url,true); } // ------------ Cria a string a ser enviada, formato campo1 = valor1&campo2=valor2... ------- function criaQueryString() { dadosUsuario=""; var frm = document.forms[0]; var numElementos = frm.elements.length; for(var i = 0; i < numElementos; i++) { if(i < numElementos-1) { dadosUsuario += frm.elements[i].name+"=" + encodeURIComponent(frm.elements[i].value)+"&"; } else { dadosUsuario += frm.elements[i].name+"=" + encodeURIComponent(frm.elements[i].value); } } } // ------------ Trata a resposta do servidor --------------- function trataResposta() { if(ajax.readyState == 4) { if(ajax.status == 200) { trataDados(); // criar essa função no seu programa } else { alert("Problema na comunicação com o objeto XMLHttpRequest"); } } }exemplo9.php<?php $gmtDate = gmdate("D, d M Y H:i:s"); header("Expires: {$gmtDate} GMT"); header("Last-Modified: {$gmtDate} GMT"); header("Cache-Control: no-cache, must-revalidate"); header("Pragma: no-cache"); header("Content-Type: text/html; charset=ISO-8859-1"); // array de preços de Frete $frete = array ( "AC" => "15,00", "AL" => "14,00", "AM" => "14,00", "AP" => "14,00", "BA" => "13,00", "CE" => "13,00", "DF" => "11,00", "ES" => "11,00", "GO" => "10,00", "MA" => "13,00", "MG" => "9,00", "MS" => "14,00", "MT" => "12,00", "PA" => "15,00", "PB" => "14,00", "PE" => "14,50", "PI" => "15,00", "PR" => "9,00", "RJ" => "9,00", "RN" => "15,00", "RO" => "15,00", "RR" => "15,00", "RS" => "9,50", "SC" => "9,00", "SE" => "14,50", "SP" => "7,00", "TO" => "13,00" ); $estado = $_GET["estado"]; if(isset($frete[$estado])) { echo "O valor do frete é R\$".$frete[$estado]; } ?>:blink:
Editado por PauladaLink para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.