Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

biakelly

escolha de combo e preenchimento de input

Recommended Posts

Oi Public2004,

 

Eu entendi, juro que vou pesquisar a forma de criar a JS mas acho que vai ser dificil, principalmente nesta forma de declarar dois eventos no value, agora meu sensor de loira ativou de vez :huh: preciso aprender como separar isso

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dentro do que sugeri, segue exemplo usando a biblioteca jQuery (pode ser feito sem ela também mas nesse caso a função muda). https://jsfiddle.net/hw97v0kx/

 

Repare no exemplo do combo que são dois valores no "value" de cada opção e separados por " , " (como se fosse um Array). E mais abaixo o campo "input" que receberá o valor tratado conforme seleção do combo.

A atenção é para identificar corretamente os elementos através dos "id's" (que são únicos para cada elemento html) e assim construir a função js.

  <form>
    <select name="myCombo" id="myCombo">
      <option> </option>
      <option value="data1_colName,data1_colImage">Data 1 Col_Name</option>
      <option value="data2_colName,data2_colImage">Data 2 Col_Name</option>
      <option value="data3_colName,data3_colImage">Data 3 Col_Name</option>
    </select>
    <input type="text" name="data_received_colImage" id="data_received_colImage">
  </form>

jQuery e função no final da página antes do fechamento da tag "body" (a função está comentada):

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
<script>
$( "#myCombo" ).change(function(){
	
	/* criando a variável com o valor (value) da opção selecionada no combo */
	var str = $( "select#myCombo option:selected" ).val();
	
	/* separando os valores da var str conforme caractere separador */
	var newStr = str.split( "," );
	
	/* preenchendo o input com o item/posição da nova var newStr */
	$( "input[type=text]#data_received_colImage" ).val( newStr[1] );

});
</script>

Quanto ao ASP (enviar o form e recuperar o valor do combo), você vai tratar da mesma forma, dá um "split" e pega somente o valor/posição desejado:

Dim strCombo
strCombo = Request.Form("myCombo")
strCombo = Split(strCombo, ",")
Response.Write(strCombo(0))

Um resumo básico que mostra a funcionalidade que você precisa, faça as adaptações necessárias.

 

Att.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Public2004

 

Esta saindo, esta saindo :D

 

 

Fiz assim, primeiro seleciono no combo colocando o macete que me ensinou colocando dois valores no value:

<select name="PRIMEIRO_TIME" id="PRIMEIRO_TIME" type="text" class="dropdown-select" size="1">
<%
set rsTypesNAMEFIRSTTEAM = Server.CreateObject("ADODB.Recordset")
rsTypesNAMEFIRSTTEAM.ActiveConnection = MM_conn_STRING
rsTypesNAMEFIRSTTEAM.Source = "SELECT * FROM COLEGIO WHERE COL_ID ORDER BY COL_DATA"
rsTypesNAMEFIRSTTEAM.CursorType = 0
rsTypesNAMEFIRSTTEAM.CursorLocation = 2
rsTypesNAMEFIRSTTEAM.LockType = 3
rsTypesNAMEFIRSTTEAM.Open()
rsTypesNAMEFIRSTTEAM_numRows = 0
%>

<%
While not rsTypesNAMEFIRSTTEAM.EOF
%>

<option value="<%=(rsTypesNAMEFIRSTTEAM.Fields.Item("COL_NOME").Value)%>,<%=(rsTypesNAMEFIRSTTEAM.Fields.Item("COL_IMAGEM").Value)%>"><%=(rsTypesNAMEFIRSTTEAM.Fields.Item("COL_NOME").Value)%></option>

<%
rsTypesNAMEFIRSTTEAM.MoveNext()
Wend
If (rsTypesNAMEFIRSTTEAM.CursorType < 0) Then
rsTypesNAMEFIRSTTEAM.MoveFirst
Else
rsTypesNAMEFIRSTTEAM.Requery
End If
%>
<option value="" selected></option>	
<%
rsTypesNAMEFIRSTTEAM.Close()
%>
</select>


Chamo no input assim:

<input type="text" name="IMAGEM_PRIMEIRO_TIME" id="IMAGEM_PRIMEIRO_TIME">

Depois adaptei o jQuery que me passou ficando assim:

<script>
$( "#PRIMEIRO_TIME" ).change(function(){
/* criando a variável com o valor (value) da opção selecionada no combo */
var str = $( "select#PRIMEIRO_TIME option:selected" ).val();

/* separando os valores da var str conforme caractere separador */
var newStr = str.split( "," );

/* preenchendo o input com o item/posição da nova var newStr */
$( "input[type=text]#IMAGEM_PRIMEIRO_TIME" ).val( newStr[1] );

});
</script>

O resultado foi melhor do que esperava. Mas não peguei o esquema do "split"

 

o sistema esta se comportando assim, ao salvar as informações na nova tabela o input grava o que determinei (fantástico este esta ok) agora o que eu seleciono no combo salva mas salva com os dois valores do value. Vou pesquisar mais sobre como aplicar o split no combo acho que só falta isso

 

Superfeliz esta me ajudando muito, obrigada mil vezes :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que bom. Em resumo o "split" serve para transformar sua string em um array. Quando informamos um caractere separador (no exemplo foi a vírgula), o "split" transformará sua string em várias strings usando como delimitador este caractere, então a cada "vírgula" encontrada, será armazenado uma posição com o valor até ali.

Você pode usar outro caractere ou até um espaço em branco, mas o ideal é que seja um caractere que não esteja presente na string base para não conflitar. Para melhor entendimento um array seria isso:

["uva","pera","maçã","salada mista"]

E estas seriam as posições de cada item do array conforme o caractere separador:

0 = uva

1 = pera

2 = maçã

3 = salada mista

Depois você pode trabalhar essas informações de várias maneiras. No seu caso como são apenas dois valores (duas posições) e já sabemos a posição de cada valor, jogamos direto:

No js : posição 1 igual ao segundo valor do array ( newStr[1] );

No asp : posição 0 igual ao primeiro valor do array ( strCombo(0) ).

 

O exemplo do ASP para recuperar o form com apenas o primeiro valor do combo já tinha citado anteriormente. Seria a mesma coisa, usar o "split" só que agora pegar o primeiro valor (posição 0 do array):

Dim strCombo
strCombo = Request.Form("myCombo")
strCombo = Split(strCombo, ",")
Response.Write(strCombo(0))

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Public2004,

 

Sua definição foi a melhor que li, tem muita informação sobre split e confesso, só entendi agora com seu texto. Muito obrigada pela definição.

 

Agora acho que estou no dia de loira, ainda não consigo imaginar como aplicar isso na prática. Ainda, sou determinada, estou pesquisando. até esta parte eu entendi:

Dim strCombo
strCombo = Request.Form("myCombo")
strCombo = Split(strCombo, ",")
Response.Write(strCombo(0))

Só na prática que ainda não rs :wacko:

 

Cheguei inocentemente fazer assim:

<select name="PRIMEIRO_TIME" id="PRIMEIRO_TIME" type="text" class="dropdown-select" size="1">
<%
set rsTypesNAMEFIRSTTEAM = Server.CreateObject("ADODB.Recordset")
rsTypesNAMEFIRSTTEAM.ActiveConnection = MM_conn_STRING
rsTypesNAMEFIRSTTEAM.Source = "SELECT * FROM COLEGIO WHERE COL_ID ORDER BY COL_DATA"
rsTypesNAMEFIRSTTEAM.CursorType = 0
rsTypesNAMEFIRSTTEAM.CursorLocation = 2
rsTypesNAMEFIRSTTEAM.LockType = 3
rsTypesNAMEFIRSTTEAM.Open()
rsTypesNAMEFIRSTTEAM_numRows = 0
%>

<%
While not rsTypesNAMEFIRSTTEAM.EOF
%>

<option value="<%=(rsTypesNAMEFIRSTTEAM.Fields.Item("COL_NOME").Value)%>,<%=(rsTypesNAMEFIRSTTEAM.Fields.Item("COL_IMAGEM").Value)%>"><%=(rsTypesNAMEFIRSTTEAM.Fields.Item("COL_NOME").Value)%></option>

<%
Dim strCombo
strCombo = Request.Form("PRIMEIRO_TIME")
strCombo = Split(strCombo, ",")
Response.Write(strCombo(0))
%>

<%
rsTypesNAMEFIRSTTEAM.MoveNext()
Wend
If (rsTypesNAMEFIRSTTEAM.CursorType < 0) Then
rsTypesNAMEFIRSTTEAM.MoveFirst
Else
rsTypesNAMEFIRSTTEAM.Requery
End If
%>
<option value="" selected></option>	
<%
rsTypesNAMEFIRSTTEAM.Close()
%>
</select>

Mas viajei rs que vergonha rs :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

O exemplo que dei do split no asp é para ser usado quando você for recuperar todos os dados do formulário lá em outro lugar ou em outra página, porque a parte js do formulário parece estar resolvida.

Uma hora você vai ter que submeter o formulário e na página que for recuperar os dados, você faz o tratamento das informações, no meu exemplo é para tratar o valor da combo, já que neste caso terá dois valores e você vai querer apenas um. Comentando o exemplo:

 

'Declarando a variável que receberá o valor do combo

Dim strCombo

'Recuperando e armazenando na variável o valor do combo

strCombo = Request.Form("myCombo")

 

'Transformando a variável/string em Array
strCombo = Split(strCombo, ",")

 

'Aqui serve apenas para printar na tela e verificar o resultado da variável tratada

'com o valor da respectiva posição "0" do array
Response.Write(strCombo(0))

 

Então fica assim, depois do tratamento o que você vai usar para trabalhar com o valor da combo é : nome_variavel(posicao_array) - Seja para usar em uma session, banco de dados, etc.

 

Resumindo, o "split do js" é para você usar na página do formulário e o "split do asp" é para usar na página que vai recuperar os dados do formulário.

 

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este exemplo:

exemplo 2:

este script faz o preenchimento de um combo e pega o valor do combo preenchido pra fazer o outro combo, tipo:

um combo país e outro combo estado

as tabelas saun:

pais- com os campos
cod_pais - chave primária
nome

estado -c om os campos
cod_pais - chave estrangeira
cod_estado
nome

as tabelas possuem relacionamento de um para muitos

<% Option Explicit 

'declaro as var 
dim var1,var2,var3,....., etc 
'recupero as var 
varpais=request.querystring("pais") 
'crioa a conexao 
%> 

<!--# include file="conexao/conexao.asp"--> 

<% 
'abro a conexao 
Call abre_conexao 
'crio o rs 
set rspais=server.createobject("ADODB.Recordset") 
'crio a SQL 
SQLpais="SELECT * FROM pais ORDER BY nome" 
rspais.open SQLpais,conexao,1,3 
%> 


'aki vou criar o combo, onde no evento onchange ele irá enviar o value do combo pais para a mesma pag, para eu recuperar o codigo do pais e assim preencher o combo estado. 

<form action="inserirend_action.asp" method="post"name="frmteste"> 
<select name="pais" size="1" Onchange="window.navigate('pag_atual.asp?pais='+frmteste.pais.value)"> 

<% while not rspais.eof%> 
<option value="<%=rs("cod_pais")%>"> 
<% if varpais=rs("pais") then 
response.write("Selecionado") 
end if%> 
<%=rs("nome")%> 
</option> 
<% rspais.movenext 
wend%> 
</select> 
<% set rspais=nothing%> 

'aki crio o combo estado 

<select name="estado"size="1"> 
if request("pais") ="" then%> 
<option value=""> selecione um pais 
<%else 
'crio o SQL estado 
SQLestado="Select * from estado where cod_pais="&varpais&" Order by nome" 
'crio o rsestado 
set rsestado=server.createobject("ADODB.Recordset") 
rsestado.open SQLestado,conexao,1,3 
<%while not rsestado.eof%> 
<option value="<%=rsestado("cod_estado")%>"> 
<%=rs("nome")%> 
</option> 
<%rs.movenext 
wend 
end if%> 
</select> 
<% set rsestado=nothing%> 
<% 'fecho a conexao 
call fecha_conexao%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

olha este exemplo:

exemplo 2:

este script faz o preenchimento de um combo e pega o valor do combo preenchido pra fazer o outro combo, tipo:

um combo país e outro combo estado

as tabelas saun:

pais- com os campos
cod_pais - chave primária
nome

estado -c om os campos
cod_pais - chave estrangeira
cod_estado
nome

as tabelas possuem relacionamento de um para muitos

<% Option Explicit 

'declaro as var 
dim var1,var2,var3,....., etc 
'recupero as var 
varpais=request.querystring("pais") 
'crioa a conexao 
%> 

<!--# include file="conexao/conexao.asp"--> 

<% 
'abro a conexao 
Call abre_conexao 
'crio o rs 
set rspais=server.createobject("ADODB.Recordset") 
'crio a SQL 
SQLpais="SELECT * FROM pais ORDER BY nome" 
rspais.open SQLpais,conexao,1,3 
%> 


'aki vou criar o combo, onde no evento onchange ele irá enviar o value do combo pais para a mesma pag, para eu recuperar o codigo do pais e assim preencher o combo estado. 

<form action="inserirend_action.asp" method="post"name="frmteste"> 
<select name="pais" size="1" Onchange="window.navigate('pag_atual.asp?pais='+frmteste.pais.value)"> 

<% while not rspais.eof%> 
<option value="<%=rs("cod_pais")%>"> 
<% if varpais=rs("pais") then 
response.write("Selecionado") 
end if%> 
<%=rs("nome")%> 
</option> 
<% rspais.movenext 
wend%> 
</select> 
<% set rspais=nothing%> 

'aki crio o combo estado 

<select name="estado"size="1"> 
if request("pais") ="" then%> 
<option value=""> selecione um pais 
<%else 
'crio o SQL estado 
SQLestado="Select * from estado where cod_pais="&varpais&" Order by nome" 
'crio o rsestado 
set rsestado=server.createobject("ADODB.Recordset") 
rsestado.open SQLestado,conexao,1,3 
<%while not rsestado.eof%> 
<option value="<%=rsestado("cod_estado")%>"> 
<%=rs("nome")%> 
</option> 
<%rs.movenext 
wend 
end if%> 
</select> 
<% set rsestado=nothing%> 
<% 'fecho a conexao 
call fecha_conexao%>

 

Oi Xan eu até tentei fazer este mas precisava de duas tabelas no meu caso eu queria com uma tabela unica. Vou manter este exemplo guardado, certamente ele servirá em projetos futuros. Obrigada!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O exemplo que dei do split no asp é para ser usado quando você for recuperar todos os dados do formulário lá em outro lugar ou em outra página, porque a parte js do formulário parece estar resolvida.

Uma hora você vai ter que submeter o formulário e na página que for recuperar os dados, você faz o tratamento das informações, no meu exemplo é para tratar o valor da combo, já que neste caso terá dois valores e você vai querer apenas um. Comentando o exemplo:

 

'Declarando a variável que receberá o valor do combo

Dim strCombo

 

'Recuperando e armazenando na variável o valor do combo

strCombo = Request.Form("myCombo")

 

'Transformando a variável/string em Array

strCombo = Split(strCombo, ",")

 

'Aqui serve apenas para printar na tela e verificar o resultado da variável tratada

'com o valor da respectiva posição "0" do array

Response.Write(strCombo(0))

 

Então fica assim, depois do tratamento o que você vai usar para trabalhar com o valor da combo é : nome_variavel(posicao_array) - Seja para usar em uma session, banco de dados, etc.

 

Resumindo, o "split do js" é para você usar na página do formulário e o "split do asp" é para usar na página que vai recuperar os dados do formulário.

 

Att.

 

 

Oi Public2004,

 

Eu não tenho palavras para agradecer tamanho conhecimento que aprendi com suas postagens, você tirou um peso enorme das minhas costas, estava ficando maluca com isso :lol:

 

Obrigada mesmo pela paciência e pelas explicações detalhadas, muito, muito, muito obrigada! :wub:

 

Estou super feliz :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.