Pessoal
Seguinte, nao estou conseguindo chamar uma função em JavaScript.
Assim, fiz em Java:
String txtEstado = request.getParameter("estadosCombo");
String txtCidade = request.getParameter("cidadesCombo");
System.out.println(txtEstado); //mostrou certo, suponha: "teste"
try{
if(txtEstado.equals("teste")){
//também não funcionou:txtEstado.equals("")
//Passa aqui, mas não entra no JavaScript. O codigo nao precisa
não precisava estar aqui, mas precisa chamar uma função então
tem algum segredo de JavaScript em JSP ???
%>
<SCRIPT language="JavaScript">
document.TheForm.cidadesCombo.disabled = true;
</SCRIPT>
<% ...
É claro, aqui eu tirei muita coisa, mas é basicamente isso que eu quero.
Alguém pode me ajudar? ![:wink: :wink:](https://www.guj.com.br/images/emoji/twitter/wink.png?v=9)
Obrigado
E aí woquiton, seguinte, no JavaScript, eu pelo menos não sei como recuperar dados pelo métodos GET e POST, então trabalho da seguinte maneira, que também não acho muito elegante:
- Recupero os dados em uma variável no JSP e aí uso em conjunto com a minha função em javaScript.
Exemplo:
String txtEstado = request.getParameter(“estadosCombo”);
…
function Cidade(){
var estado = <% out.println(txtEstado); %>;
íf(estado == “RS”) {
Bla, Bla,…
}
}
Se não estiver muito claro, posta que tento explicar melhor.
Lucas
To tentando fazer isso mesmo, mas estou tentando deixar as condições… (if) em Java mesmo…
Seguinte, nao sei se já viu… tem umas consultas com combobox agora, que funciona assim… o usuario seleciona o estado, estao o combobox de cidade é liberado e faz uma consulta das cidades do estado selecionado do combo ao lado. Isso vale para o bairro também.
Então… tenho que fazer as condições em JavaScript, a parte de
document.Form.ComboTal.disabled = true nao funciona dentro do JavaScript dentro do Java. Acho que ele executa o JavaPrimeiro.
Seguinte, após selecionado o Estado, tu tens que submeter a página novamente. Submetida a página, tu realiza a pesquisa de cidades com o estado recuperado, monta o combo de cidades.
Exemplo:
<script language=“Javascript”>
function Cidade(){
var estado = <% out.println(strEstado); %>;
if(estado != “”){
document.form.combocidade.disabled = false;
}else{
document.form.combocidade.disabled = true;
}
}
</script>
- Tu deves utilizar somente as variáveis do JSP na Função do JavaScript e realizar o controle todo por ele.
Lucas
Então, acho que vc tem razão, mas o que me preocupa, é que acho que não será mantido o estado. Por exemplo.
Quando eu selecionar o estado, e submeter para a mesma pagina…
A consulta do combo de estados será feita de novo… quase certo que ele nao manterá o estado, tipo ‘SP’ no Combo (como selecionado, e os outros ainda lá, pois quando o usuario alterar (on change), chamo uma funcao JavaScript que submeterá novamente o formulario.
Isso de manter selecionado seria importante, pensei numa session, mas assim nao daria também, pois ficaria 2 SP. Um SP do session e outro SP da própria consulta…
O que acha?
[quote=“woquiton”]Lucas
Então, acho que vc tem razão, mas o que me preocupa, é que acho que não será mantido o estado. Por exemplo.
Quando eu selecionar o estado, e submeter para a mesma pagina…
A consulta do combo de estados será feita de novo… quase certo que ele nao manterá o estado, tipo ‘SP’ no Combo (como selecionado, e os outros ainda lá, pois quando o usuario alterar (on change), chamo uma funcao JavaScript que submeterá novamente o formulario.
Isso de manter selecionado seria importante, pensei numa session, mas assim nao daria também, pois ficaria 2 SP. Um SP do session e outro SP da própria consulta…
O que acha?[/quote]
Isso deve resolver:
<select name=“ESTADO”>
<option
<%
if(strEstado == VALOR_DO_CAMPO_DO_BD){
out.println(“selected”)
}
%> value=“VALOR DO CAMPO DO BD”><%VALOR DO CAMPO DO BD%></option>
</select>
Lucas
Vou colar em prática.
Obrigado mesmo pela ajuda.
Acho que vai dar tudo certo sim.
Valeu.
[]´s
Woquiton ![:slight_smile: :slight_smile:](https://www.guj.com.br/images/emoji/twitter/slight_smile.png?v=9)
Qualquer coisa, posta o fonte para darmos um olhada, ou manda por
e-mail.
Valeu ![:wink: :wink:](https://www.guj.com.br/images/emoji/twitter/wink.png?v=9)
Lucas
Só mais uma questão, como vc faz pra chamar a função JavaScript. Assim que abrir a pagina, com onLoad ??
Pergunto isso por que, as variáveis postadas, devem primeiro:
String a = request.getParameter(“blaba”);
pra depois eu enviar numa função JavaScript.
Qual a melhor forma? A questão é conseguir enviar as variáveis postadas.
[]´s
Isso mesmo, chama a função pelo onLoad, porque as variáveis na função JavaScript já estarão preenchidas. ![:wink: :wink:](https://www.guj.com.br/images/emoji/twitter/wink.png?v=9)
Lucas
Tá indo tudo bem, só agora que emperrou num erro de sintaxe.
Tem idéia o que pode ser??
estado é a variável de retorno do banco
if(txtEstado.equals(estado.toString())) out.println(“selected”)
[quote=“woquiton”]Lucas
Tá indo tudo bem, só agora que emperrou num erro de sintaxe.
Tem idéia o que pode ser??
estado é a variável de retorno do banco
if(txtEstado.equals(estado.toString()))
out.println(“selected”)
[/quote]
- O erro de sintaxe é do JavaScript ou do JSP?
if(txtEstado.equals(estado.toString()))
out.println("selected") -- Faltou ';'
Verifica se não é o “;” logo após o out.println.
Lucas
O ; eu coloquei, nao era isso. Era uma tag, desatenção minha.
Mas ele tá com problema na condição… já tentei == , .equals … .toString().equals() … e coloquei fixo, mas ainda assim ele nao funciona a condição.
![:wink: :wink:](https://www.guj.com.br/images/emoji/twitter/wink.png?v=9)
Coloca o pedaço do fonte onde ele gera o combo para que eu possa dar uma olhada. Por favor.
txtEstado é a variavel do request.getParameter
estado é a do banco.
Dei um out.println nas duas, e as duas vem com valor corretamente. E iguais.
<select size=“1” name=“estadosCombo”
onchange=“javascript:changeEstado();”>
<%
try{
EstabelecimentosAction estAction = new EstabelecimentosAction();
ArrayList estados = estAction.getEstados();
Iterator iter = estados.iterator();
%>
<option value=""></option>
<%
while (iter.hasNext()){
EstabelecimentosVO listEstados = (EstabelecimentosVO) iter.next();
String estado = listEstados.getEstado();
%>
<option
<% if(txtEstado == estado){
out.println("selected");} %>
value="<%=estado%>"> <%=estado%></option>
<%
}}catch(Exception e){
System.out.println(e);
e.printStackTrace();
}
%>
</select>
Lucas
Funcionou aqui, ao invés de txtEstado.equals, estado.equals. A variável do request, nao verificava direito a igualdade. Extranho nao é?
![:slight_smile: :slight_smile:](https://www.guj.com.br/images/emoji/twitter/slight_smile.png?v=9)
Beleza woquiton, espero que a ajuda tenha valido a pena.
Valeu carinha. ![:wink: :wink:](https://www.guj.com.br/images/emoji/twitter/wink.png?v=9)
Lucas
Claro, você me ajudou bastante.
Obrigado mesmo.
Espero poder contar mais vezes com sua ajuda, se precisar também, quem sabe eu nao saiba.
[]´s
Woquiton