Ir para conteúdo

POWERED BY:

Arquivado

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

www.giovaniarduini.com

[Resolvido] each Jquery

Recommended Posts

Olá galera !!

 

Gostaria de fazer uma função no Jquery parecida com o foreach do php:

 

Ex:

foreach ($_POST as $key => $value) {
   $kv[] = "$key=$value";
 }

 

Aki eu si que ele diz que o atributo name recebe o valor do atributo value do mesmo, então se o campo input tiver o name ="data" ele cria uma variavel $data com o valor do input com o mesmo nome.

 

No Jquery gostaria de fazer o mesmo

 

Ex:

 

Aki diz que quando eu clicar em um select ele pega o atributo id e o valor:

$('select').change(function(){
$(this).each(function(){
 var id = $(this).attr("id");
 var valor = $(this).val();
});
});

 

Gostaria de saber como fazer igual ao php associar o id com o valor.

 

ex: se o select clicado tiver o id data, ele cria uma variavel data com o valor associado, assim criará variaveis dinamicamente e eu saberia que se der um alert com id ou nome do select ele exibira o valor associado.

 

Alguem poderia me ajudar por favor ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gostaria de saber como fazer igual ao php associar o id com o valor.

isso não parece ser "necessário"

 

qndo der onchange em tal select, o valor é daquele select. Já estará associado pela tua ação que disparou o evento.

no caso o método .serialize() faz uma query string de todos os itens do teu formulário, e envia no par name=valor;

 

 

porém, é mais simples q você explique a sua necessidade.

Compartilhar este post


Link para o post
Compartilhar em outros sites

primeiramente Obrigado pela atenção

 

Na pagina eu tenho cinco select,não quero criar uma função para cada um e tb não quero ter que criar na unha as variaveis, eu quero que quando clique nos selects ele crie as variaveis com o nome dos selects, como o usando o foreach do php, vindo o valor de um get ou post, levando em consideração que no Jquery o change, click e outros são considerados gets.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então cara.. php é uma linguagem interpretada e estruturada, e agora com umas doses de orientação a objetos.

javascript é uma linguagem diferente, que implementa alguns paradigmas diferentes também.

 

 

Você não precisa criar as 5 variaveis na mão, e nem criar uma function para cada select.

Entenda que são linguagens diferentes, e existem formas diferentes de chegar a um resultado, dado o paradigma de cada uma delas.

 

 

Essa forma de "criar as variaveis", igual o foreach() do php faz, não funciona bem para javascript. Pois temos outras formas melhores de manipular os elementos.

Diga oque você precisa, o q você precisa fazer com isso tudo. Assim é mais simples indicarmos uma solução melhor, do que essa que você pensou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

então o método .serialize(), que eu citei no meu primeiro post deste tópico resolve muito bem essa questão.

 

http://api.jquery.com/serialize/

 

 

já que você está usando jQuery, não precisa fazer tudo isso ai na mão. Esse método da lib faz por você.

Compartilhar este post


Link para o post
Compartilhar em outros sites

<script type="text/javascript">
<!--
$(document).ready(function() {


   $('select').change(function(){
      $(this).serialize();
// como eu associo o valor ao seu select
       var dia = menu1;
       var ano = menu2;
     ou mesmo dando um alert direto
       alert(menu1);
       ou usando assim:
       alert(select[0])
   });




});
____________________________________________

<select name="menu1" >
   <option>unnamed1</option>
   <option>unnamed2</option>
   <option>unnamed3</option>
 </select>
 <br /><br />
 <select name="menu2" >
   <option>unnamed1</option>
   <option>unnamed2</option>
   <option>unnamed3</option>
 </select>

//-->
</script>

 

Tentei assim mas não deu certo sempre retorna uma variavel vazia

<script type="text/javascript">
<!--
$(document).ready(function() {


   $('select').change(function(){
	var fields = $(this).serialize();

	fields = fields.split("=");

	var selecte = fields[0];
	var valor = fields[1];

	if(selecte == "menu1"){
		var dia = valor;
	}
	if(selecte == "menu2"){
		var mes = valor;
	}

	var data = dia+"/"+mes;

	alert(data);
});


});


//-->
</script>
</head>

<body>
<div id="results"></div>
<form name="form1" id="form1">
 <select name="menu1" >
   <option>1</option>
   <option>2</option>
   <option>3</option>
 </select>
 <br /><br />
 <select name="menu2" >
   <option>Jan</option>
   <option>Fev</option>
   <option>Mar</option>
 </select>

</form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

você chegou a ver o link ?

 

o serialize() é um método do objeto form, e não do <select>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou vendo neste momento, sei que pode ser usado em varios objetos, porém minha duvida inicial é como armazenar cada valor em uma variavel diferente a cada clique.

 

Fiz desta forma e funcionou exatamente igual ao link, porem quando eu preciso armazenar em variavel não funciona

 

exemplo do link, para select:

<script type="text/javascript">
<!--
$(document).ready(function() {


   $('select').change(function(){
	/*var fields = $(this).serialize();

	fields = fields.split("=");

	var selecte = fields[0];
	var valor = fields[1];

	if(selecte == "menu1"){
		var dia = valor;
	}
	if(selecte == "menu2"){
		var mes = valor;
	}

	var data = dia+"/"+mes;

	alert(data);

	var fields = $(this).serializeArray();

	jQuery.each(fields, function(i, field){
       var sel = field.name;
	var valor = field.value;

	if(sel == "menu1"){
		var dia = valor;
	}
	if(sel == "menu2"){
		var mes = valor;
	}

	var data = dia+"/"+mes;
	alert(data);
     });*/
	var fields = $(this).serializeArray();
	jQuery.each(fields, function(i, field){
       $("#results").append(field.value + " ");
     });
	//alert(fields);
});


});


//-->
</script>

<div id="results"></div>

 <select name="menu1" >
   <option>1</option>
   <option>2</option>
   <option>3</option>
 </select>
 <br /><br />
 <select name="menu2" >
   <option>Jan</option>
   <option>Fev</option>
   <option>Mar</option>
 </select>

Compartilhar este post


Link para o post
Compartilhar em outros sites
minha duvida inicial é como armazenar cada valor em uma variavel diferente a cada clique.

desnecessário 'armazenar cada valor em variaveis', e é isso que estou tentando te falar desde o início.

em todo caso:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var dados = $('form').serialize();
alert( dados );//menu1=1&menu2=Jan


var arr = new Array();
$('select').each( function( i ){
	var $this = $( this )
	arr[i] = $this.attr('name')+'='+$this.val();
});
alert( arr );//menu1=1,menu2=Jan


alert( arr.join('&') ); //menu1=1&menu2=Jan
});
</script>

<form>
<select name="menu1" >
	<option value="1">1</option>
	<option value="2" selected="selected">2</option>
	<option value="3">3</option>
</select>
<br /><br />
<select name="menu2" >
	<option value="Jan">Jan</option>
	<option value="Fev">Fev</option>
	<option value="Mar">Mar</option>
</select>
</form>

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.