2011-11-11 26 views
10

Habrá dos listas desplegables,seleccione la opción Rellenar dinámicamente con jQuery

En primer lugar tener la lista de proveedores móviles, y la segunda tiene la lista de modelos por vendedor.

Cuando se selecciona un proveedor de la primera lista desplegable, la segunda lista desplegable debe rellenarse con el modelo relevante para ese proveedor de forma dinámica. Esto es para el sitio web móvil, es mejor usar jquery-mobile

Los valores de opción para el segundo en un mapa json.

<select class="mobile-vendor"> 
    <option value="motorola">Motorola</option> 
    <option value="nokia">Nokia</option> 
    <option value="android">Android</option> 
    </select> 

selectValues = {"nokia" : {"N97":"download-link", 
           "N93":"download-link"}, 
       "motorola": {"M1":"download-link", 
           "M2":"download-link"}} 

<select class="model"> 
    <option></option> 
</select> 

Por ejemplo, si el usuario selecciona Nokia en la primera lista desplegable, la segunda lista desplegable debe tener N97, N93 como las opciones.

+1

Tiene un problema con su matriz json, no funciona de la manera en que lo desea. Solo puede tener una instancia de cada artículo con el mismo nombre, eche un vistazo aquí: http://jsfiddle.net/niklasvh/uJUS2/ – Niklas

+0

@Niklas: lo he corregido. –

Respuesta

17

EDIT: Nueva javascript para tener en cuenta su estructura JSON actualización:

$(function() { 
    var selectValues = { 
     "nokia": { 
      "N97": "http://www.google.com", 
      "N93": "http://www.stackoverflow.com" 
     }, 
     "motorola": { 
      "M1": "http://www.ebay.com", 
      "M2": "http://www.twitter.com" 
     } 
    }; 

    var $vendor = $('select.mobile-vendor'); 
    var $model = $('select.model'); 
    $vendor.change(function() { 
     $model.empty().append(function() { 
      var output = ''; 
      $.each(selectValues[$vendor.val()], function(key, value) { 
       output += '<option>' + key + '</option>'; 
      }); 
      return output; 
     }); 
    }).change(); 

    // bonus: how to access the download link 
    $model.change(function() { 
     $('#download-link').attr('href', selectValues[$vendor.val()][$model.val()]).show(); 
    }); 
}); 

Ejemplo de trabajo está disponible in jsFiddle.

Tenga en cuenta que esto debería funcionar con jQuery mobile muy bien.

+0

He actualizado el mapa json, ¿puedes verificar y actualizar tu respuesta? ¡Gracias por la respuesta! –

+0

@KugathasanAbimaran ¿Cuál es el punto de tener el valor de "enlace de descarga" para cada propiedad en el objeto anidado? – GregL

+0

Una vez que el usuario seleccione el elemento de la segunda lista desplegable, podrá descargar la aplicación correspondiente al modelo de proveedor. –

Cuestiones relacionadas