Ir para conteúdo

Arquivado

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

flavialieggio

Campo text para select multiple

Recommended Posts

Olá pessoal!!

 

Cá estou mais uma vez para pedir a orientação de vocês sobre a seguinte questao: http://forum.imasters.com.br/public/style_emoticons/default/closedeyes.gif

 

Tenho um campo text que puxa os nomes dos usuarios e agregado a isso uma função auto complete em ajax trabalhada com o Micox aqui mesmo pelo forum!

 

Eu quero pegar os resultados desse campo text e alimentar uma select multiple para assim gerar um array com os codigos dos usuarios escolhidos para armazenar no banco depois....

 

Não sei se é a melhor lógica, mas a principio é pegar do text e alimentar a select multiple... eu ja consegui passar de text para text... entao ta assim:

 

<?php
session_start();

include ('../inc/banco_mysql.php');
include ('../pfweb/pfweb_mysql.php');
?>
<link rel="stylesheet" type="text/css" href="../style.css" />
<script src="script.js"></script>
<script language="javascript">
function pesquisa(e,valor){

	/* crossbrowser elcio */
	if(typeof(e)=='undefined')var e=window.event
	source=e.target?e.target:e.srcElement
	if(source.nodeType == 3)source = source.parentNode
	/* fim crossbrowser */

	/* capturando se o cara digitar seta pra baixo */
	if(e.keyCode==40){ //seta pra baixo
		pega("pagina").selectedIndex = 0;
		pega("pagina").focus();
		return true;
	}
	/* fim capturando */
	
	//FUNÇÃO QUE MONTA A URL E CHAMA A FUNÇÃO AJAX
	url="busca_nome.php?valor="+valor;
	ajaxGet(url,pega("pagina"),true)
	
}

function altera(e,quem)
{
	/* crossbrowser elcio */
	if(typeof(e)=='undefined')var e=window.event
	source=e.target?e.target:e.srcElement
	if(source.nodeType == 3)source = source.parentNode
	/* fim crossbrowser */

	/* capturando se o cara digitar seta pra baixo */
	if(e.keyCode==13 || e.keyCode==32){ //enter ou espaço
		alteraReal(quem);
	}
	/* fim capturando */

}
function alteraReal(quem){
	pega("nome").value = quem.value;
	pega("nome").focus();
	quem.style.visibility="hidden";
}

function passa_valor(valor)
{
	var val = document.getElementById("nome").value;
	valor = val;
	document.getElementById("pessoas").value = valor;
}
</script>
<table width="100%">
	<tr class="td_pfweb">
	<td>Selecionar Grupo:</td>
	<td>
		<select name="nivel[]" id="nivel" size="5" multiple="multiple">
		<?php
		$query = "select cod_nivel, upper(descricao) descricao from nivel";
		$result = mysql_query($query, $conexao) or die (mysql_error());
		while($rows = mysql_fetch_array($result))
		{
			echo "<option value=".$rows['cod_nivel'].">".$rows['cod_nivel']." - ".$rows['descricao']."</option>";
		}
		?>
		</select>
	</td>
	</tr>
	<tr class="td_pfweb">
	<td>Selecionar Usuário:</td>
	<td style="position: relative">
		<div id="tudo">
		<input type="text" id="nome" name="nome" onKeyUp="pesquisa(event,this.value)" />
		<input type="button" name="add" value="Adiicionar Nome para permissão" onClick="passa_valor(this)">
		<select name="pagina" id="pagina" onkeyup="altera(event,this)" onBlur="alteraReal(this)" size="4">
		</select>
		<input type="text" name="pessoas" id="pessoas">[b]ESTE AQUI E O CAMPO TEXT QUE RECEBE O VALOR DO OUTRO CAMPO TEXT NOME[/b]
		</div>
		<!--<select name="pessoas[]" size="5" multiple="multiple" id="pessoas">[b] ESSA AQUI E A SELECT QUE QUERO ALIMENTAR[/b]
		</select>-->
	</td>
	</tr>
</table>

E isso galerinha!!!

 

[]´s Flávia :rolleyes:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele recebe os valores como? Separados por vírgula, por ponto-e-vírgula? Teoricamente, você quer passar um campo texto pra vários options dentro de um select, então precisa de um padrão pra definir como vai "quebrar" o campo texto, depois, fica algo assim:

 

<script>

window.onload = function() {

var origem = document.getElementById("origem");
var destino = document.getElementById("destino");
var valores = origem.value.split(",");
var quantidade = valores.length;
for (var i=0; i<quantidade; i++) {
	var option = document.createElement("option");
	option.appendChild(document.createTextNode(valores[i]));
	destino.appendChild(option);
}

}

</script>
<input type="text" id="origem" value="abc,123,666">
<select id="destino" multiple="multiple" size="3"></select>

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola Tash

 

:rolleyes: Na verdade nao serao separados por virgulas....

 

eu digito o nome, no auto completar aparece o nome, dai clico nele e me mostra codigo do usuario no banco.. dai quero pegar esse código e passar para o select multiple alimentando ele... com base no seu exemplo (muito obrigada mesmo!!) eu fiz mas nao tive sucesso... veja como esta:

 

js....

function passar_valor(valr)
{
	var nomes   = document.getElementById("nome").value;
	valr = nomes;
	var pessoas = document.getElementById("pessoas");
	var qtd	 = valr.length;
	for (var i=0; i<qtd; i++)
	{
		var option = document.createElement("option");
		option.appendChild(document.createTextMode(valr[i]));
		pessoas.appendChild(option);
	}
}

os campos

<td style="position: relative">
		<div id="tudo">
		<input type="text" id="nome" name="nome" onKeyUp="pesquisa(event,this.value)" />
		<input type="button" name="add" value="Adiicionar Nome para permissão" onClick="passar_valor(this)">
		<select name="pagina" id="pagina" onkeyup="altera(event,this)" onBlur="alteraReal(this)" size="4">
		</select>
		<!--<input type="text" name="pessoas" id="pessoas">-->
		</div>
		<select name="pessoas[]" size="5" multiple="multiple" id="pessoas">
		</select>
	</td>

o que pode ser??? :huh:

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.