2017-10-19 16 views
1

J'ai la partie ci-dessous de jquery qui ajoute de nouvelles options à l'entrée de sélection via ajax. Cependant, la sélection a initialement une option que je voudrais supprimer, puis remplacer par les options retournées via ajax.jquery sélectionner les options supprimer l'option initiale et la remplacer par d'autres

$(document).ready(function() { 
    $('#id_previous_postcode').change(function() { 
    var postcode = $(this).val() 
    console.log(postcode) 
    $.ajax({ 
     // could prevent url hard coding by using url tag in form widget attribute and assign url key here to that attr 
     url: '/users/prior_addresses_ajax/', 
     data: { 
     'postcode': postcode 
     }, 
     dataType: 'json', 
     success: function (data) { 
     var select = document.querySelector('#id_previous_full_address'); 
     console.log(data) 
     data.property_choices.forEach(function (subarray) { 
      var option = new Option(subarray[1], subarray[0]); 
      select.options.add(option); 
     }); 
     } 
    }) 
    }) 
}) 
+0

Pouvez-vous envoyer ce que votre sélecteur ressemble avant que le jQuery est déclenché? –

Répondre

2

Lorsque vous utilisez jQuery, vous pouvez .empty() sélectionner.

success: function (data) { 

     // Will remove previous set options from select 
     $('#id_previous_full_address').empty(); 

     var select = document.querySelector('#id_previous_full_address'); 
     console.log(data) 
     data.property_choices.forEach(function (subarray) { 
      var option = new Option(subarray[1], subarray[0]); 
      select.options.add(option); 
     }); 
     } 
+0

parfait merci! – Yunti

0

Je suggère d'utiliser

$("SELECTOR").first().detach(); 

Et puis ...

$("NEW ELEMENT").preppendTo($("SELECTOR").first().parent());