jQuery selezionare l’opzione valore

Come si fa a impostare la “città” valore per la stessa cosa come valore di paese quando non c’è nessuna opzione per una città?

Per esempio, il Benin non ha un’opzione per selezionare una città all’interno di esso. A questo link http://jsfiddle.net/yPb6N/1/, se si seleziona “Benin”, sotto il menu a discesa visualizza Benin undefined. Come si fa a visualizzare il display Benin Benin?

<select id="country-select">
    <option value="us">US</option>
    <option value="germany">Germany</option>
     <option>Ireland</option>
    <option>Benin</option>
    <option>Italy</option>
</select>

<select id="us-select" class="sub-menu hide">
    <option value="austin">Austin</option>
</select>

<select id="germany-select" class="sub-menu hide">
    <option value="berlin">Berlin</option>
</select>
<p></p>
<font size="5"><font color="red"><div class="countryvalue" >Value</div></font></font> <br/>
​


function countrySelectChanged() {
    $('.sub-menu').hide();
    var selectedCountry = $('#country-select').val();
    if (selectedCountry) {
        $('#' + selectedCountry + '-select').show();
    }
}

$(document).ready(function() {

    $('#country-select').change(countrySelectChanged );
     countrySelectChanged();

    $("#country-select").change(function () {
          var str = $('#country-select').val() + " " + $("#" + $("#country-select option:selected").val()  + "-select option:selected").val();
          $("#country-select option:selected").each(function () {
            });
          $(".countryvalue").text(str);
        })
        .change();
    });
​

.hide {
display: none;            
}​

Il mio codice non funziona

    if (($('#country-select').val() != "us") || ($('#country-select').val() != "germany")) {
    $("#" + $("#country-select option:selected").val() + "-select option:selected").val() == $('#country-select').val();
}

grazie 🙂

  • Si prega di chiarire la tua domanda. Sto avendo difficoltà a capire qual è il tuo obiettivo.
  • Sì, si prega di chiarire il vostro obiettivo.
  • $(‘#paese-selezionare’).val() restituisce sempre un valore (se selezionato)… se un elemento option non hanno un valore di attributo, la proprietà text è implicitamente utilizzato per selezionare il valore, in altre parole, le altre tre opzioni conterrà il testo del set di opzioni per il loro valore se scelto.
  • per esempio,il Benin non ha città di opzioni, Se si apre questo link jsfiddle.net/yPb6N/1, e selezionare “Benin”, il valore viene visualizzato “Benin undefined” come fare il valore è “Benin Benin” Grazie per la pronta risposta
InformationsquelleAutor olo | 2012-11-29



3 Replies
  1. 4

    Questa linea:

    var str = $('#country-select').val() + " " + $("#" + $("#country-select option:selected").val()  + "-select option:selected").val();

    Deve essere qualcosa come:

    var country = $('#country-select option:selected').val();
    var city = $("#" + country  + "-select option:selected").val() || country;
    $(".countryvalue").text(country + " " +city);

    In questo modo, se il nome della città non esiste, verrà utilizzato il nome del paese. Inoltre, non eseguire più di selettori per lo stesso elemento, che è devastante.

    Ecco l’aggiornamento violino.

    • Grazie Esteta, questo è più logico e comprensibile. ma questo link non è una giusta 🙂
    • Non so che cosa era sbagliato con jsFiddle, ho corretto il link dovrebbe funzionare bene adesso.
    • fantastico!!! si sta lavorando 🙂 grazie mille
  2. 1

    Credo che si desidera stampare solo il nome del paese se non c’è città associata con questo paese. Se è così, ho creato questo violino : http://jsfiddle.net/scaillerie/tSgVL/1/ .

    Infatti, è necessario verificare se l’elenco associati con il vostro paese esiste o non esiste :

    hasCity = $("#" + $("#country-select option:selected").val() + "-select").length !== 0

    e quindi stampare il paese.


    Modifica

    Sembra che si desidera duplicare il paese, quindi a seconda del test precedente, si avrà :

    str = $country.val() + " " + (hasCity ? $("#" + country_val  + "-select option:selected").val() : $country.val());
    • Ho appena letto il tuo edit e poi aggiornato la mia risposta…
    • Grazie mille Samuele
  3. 1

    che fondamentalmente @Esteta detto, ho appena rivisto l’intera funzione (voluti alcuni minuti), forse ti piace (ho aggiornato il violino: http://jsfiddle.net/yPb6N/4/):

    $(document).ready(function() {
      var country
        , city
        , $selected
        , $cs = $('#country-select')
        , $cv = $(".countryvalue");  
      $cs.on('change', function() {
          country = $cs.val() || $cs.text();
          $selected = $cs.find(':selected');
          city = $selected.val() || $selected.text();
          $('.sub-menu').addClass('hide');
          if($selected.val()) { 
            $('#' + $selected.val() + '-select').removeClass('hide');
            city = $('#' + $selected.val() + '-select').val() || country;
          }
          $cv.text(country + ' ' + city);
      });
      $cs.trigger('change');    
    });​

Lascia un commento