Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/09/2013, 07:06
Novato2013
 
Fecha de Ingreso: junio-2013
Ubicación: Madrid
Mensajes: 61
Antigüedad: 10 años, 11 meses
Puntos: 5
Pasando un valor con una función javascript para filtro

Buenas estoy intentando poner un evento onclick para seleccionar una banderita y que me busque los elementos de ese pais.
Con los colores lo he conseguido pero ahora me he pillado con las banderas, en teoría es lo mismo pero no consigo pasarle el valor adecuado a la función. Pego código para que se entienda mejor, pongo primero el ejemplo de la tabla de colores que funciona:

Este es mi filtro del color, q aunque es PHP mi duda está en la parte de javascript por eso lo he puesto en esta parte del foro:

Código PHP:
Ver original
  1. //Color
  2. $ColorFilter='';
  3.  
  4. if (isset ($_POST['colorcar'])) {
  5.     $ColorInput = $_POST['colorcar'];
  6. } elseif (isset( $_SESSION['filter']['colorcar'] )) {
  7.     $ColorInput = $_SESSION['filter']['colorcar'];
  8. } else {// Nothing
  9. }
  10.  
  11. if (isset($ColorInput)) {
  12.        
  13.     if ($ColorInput !=''){
  14.         $_SESSION['filter']['colorcar'] = $ColorInput;
  15.         if($DataFilter!="") {
  16.             $DataFilter .= " AND ";
  17.         }
  18.        
  19.         foreach ($arrColor as $CarColor) {
  20.             if ($CarColor["ClassColor"] == $ColorInput) {
  21.                 $ColorFilter = $CarColor["body_colorgroup_id"];
  22.             }
  23.         }
  24.         $DataFilter .= "Body_colorgroup_id = " . $ColorFilter ." ";
  25.     }
  26. }else {
  27.     $ColorInput = '';
  28. }

Esta es la parte del código donde creo la tabla de colores y la muestro por pantalla para que el usuario pueda clickear en el color que quiera:

Código PHP:
Ver original
  1. <label for="ColorInput"><?php echo $arrMainPage[$MainPageColor]["TextHeader"]; ?></label>
  2.                                 <table name="ColorInput" id="ColorsTable" >
  3.                                     <tr>
  4.                                     <?php  
  5.                                         $intCount = 1;
  6.                                         $intHalf =  count($arrColor)/2;
  7.                                            
  8.                                         foreach ($arrColor as $Color){
  9.                                            
  10.                                             if ($Color["body_colorgroup_id"] == $ColorFilter ) {
  11.                                     ?>          <td onclick="press(this)" name="ColorInput" id="selected-color" value="<?php echo $Color["body_colorgroup_id"]; ?>" class="<?php echo $Color["ClassColor"]; ?>" title="<?php echo $Color["colorDescription"]; ?>"></td>
  12.                                     <?php   } else {
  13.                                     ?>          <td onclick="press(this)" name="ColorInput"  value="<?php echo $Color["body_colorgroup_id"]; ?>" class="<?php echo $Color["ClassColor"]; ?>" title="<?php echo $Color["colorDescription"]; ?>"></td>
  14.                                     <?php   }  
  15.                                             if ($intCount >= $intHalf) {
  16.                                     ?>
  17.                                     </tr>
  18.                                     <tr>
  19.                                     <?php       $intHalf = $intHalf*2;
  20.                                             }  
  21.                                             $intCount++;
  22.                                         }
  23.                                     ?> 
  24.                                     </tr>
  25.                                 </table>                       
  26.                                 <input type="hidden" id="colorcar" name="colorcar" value="" />

Y esta es la función javascritp que me permite clickear con el evento onclick y cambia algunas características de la celda seleccionada, como el borde para que dé sensación d que estás seleccionando:

Código Javascript:
Ver original
  1. var cell = document.getElementById('selected-color');
  2.             if (cell) {
  3.                 press(cell);
  4.             }
  5.            
  6.             function press(obj) {
  7.                 obj.style.border = '3px solid black';
  8.                 if (cell != null && cell != obj){
  9.                     cell.style.border = '';
  10.                 }
  11.                 cell = obj;
  12.                 $("#colorcar").attr({
  13.                     value: cell.className
  14.                 })
  15.             }

Y si no me equivoco con la última parte de la función press en value le pasa el valor de la celda que en este caso es un color.

Bueno pues he intentado lo mismo para las banderitas de los paises, pero esta vez en vez d celdas con imágenes y no me funciona muy bien. Pego código a ver si veis donde me estoy equivocando, yo tengo una ligera idea.

Esta es la parte del filtro de paises:

Código PHP:
Ver original
  1. //Country
  2. $DataFilter='';
  3. $CountryFilter='';
  4.  
  5. if (isset ($_POST['CountryCar'])) {
  6.     $CountryInput = $_POST['CountryCar'];
  7. } elseif (isset( $_SESSION['filter']['CountryCar'] )) {
  8.     $CountryInput = $_SESSION['filter']['CountryCar'];
  9. } else {// Nothing
  10. }
  11.  
  12. if (isset($CountryInput)) {
  13.    
  14.     if ($CountryInput !=''){
  15.         $_SESSION['filter']['CountryCar'] = $CountryInput;
  16.         if($DataFilter!="") {
  17.             $DataFilter .= " AND ";
  18.         }
  19.        
  20.         foreach ($arrCountry as $CarCountry) {
  21.             if ($CarCountry["ClassCountry"] == $CountryInput) {
  22.                 $CountryFilter = $CarCountry["CountryCodePK"];
  23.             }
  24.         }
  25.         $DataFilter .= "Previous_ownerCountry = '" . $CountryFilter ."' ";
  26.     }  
  27. } else {
  28.     $CountryInput = '';
  29. }

Esto donde muestro por pantallla las banderas para que el usuario elija:

Código PHP:
Ver original
  1. <label for="CountryInput"><?php echo $arrMainPage[$MainPageCountry]["TextHeader"]; ?></label>
  2.                                 <div name="CountryInput" id="CountriesFlags">
  3.                                 <?php
  4.                                     foreach ($arrCountry as $Country){
  5.                                         if ($Country["CountryCodePK"] == $CountryFilter ) {
  6.                                 ?>          <img onclick="choose(this)" name="CountryInput" id="selected-country" value="<?php echo $Country["CountryCodePK"]; ?>" class="HeightFlags" title="<?php echo $Country["CountryDescription"]; ?>" src="<?php echo $Country["ClassCountry"]; ?>">
  7.                                 <?php   } else {
  8.                                 ?>          <img onclick="choose(this)" name="CountryInput" value="<?php echo $Country["CountryCodePK"]; ?>" class="HeightFlags" title="<?php echo $Country["CountryDescription"]; ?>" src="<?php echo $Country["ClassCountry"]; ?>">
  9.                                 <?php   }  
  10.                                     }
  11.                                 ?> 
  12.                                 </div>                     
  13.                                 <input type="hidden" id="CountryCar" name="CountryCar" value="" />

Y esta es la función de javascript que es la parte que peor domino y es donde creo que la estoy liando:

Código Javascript:
Ver original
  1. //Select a flag
  2.             var flag = document.getElementById('selected-country');
  3.             if(flag) {
  4.                 choose(flag);
  5.             }
  6.            
  7.             function choose(obj) {
  8.                 obj.style.border = '3px solid #006DCC';
  9.                 if (flag != null && flag != obj){
  10.                     flag.style.border = '';
  11.                 }
  12.                 flag = obj;
  13.                 $("#CountryCar").attr({
  14.                     value: flag.value
  15.                     //value: flag.valueName
  16.                     //value: flag.className
  17.                     //value: flag.src
  18.                     //value: flag.srcName
  19.                     //value: flag
  20.                     //value: flag.()
  21.                 })
  22.             }

Quizás tenga que cambiar lo de attr. que no sé muy bien como funciona sólo sé que para el anterior si que me funcionó pero era una clase, ahora le tengo que pasar el valor que viene dentro de value -> value="<?php echo $Country["CountryCodePK"]; ?> creo, pero no lo consigo.
Cuando pongo lo mismo que para los colores, es decir uso flag.className e imprimo por pantalla el valor de $CountryInput para ver que está cogiendo me sale que coge la clase HeightFlags.

Alguien me ayuda??

Muchas gracias.

Saludos.