2015-06-30 21 views
5

mam tej funkcji:Jak wydrukować pierwszy element z listy rozwijanej po zmianie?

function LoadRegions() { 
    var region = $('#RegionID'); 


    var url = "/Account/GetRegions"; 
    $.getJSON(url, { countryId: $('#CountryID').val() }, function (response) { 
     // clear and add default (null) option 

     //region.empty().append($('<option></option>').val('').text('Please select')); 



     for (var i = 0; i < response.length; i++) { 
      region.append($('<option></option>').val(response[i].Id).text(response[i].Name)); 
     } 

    }); 
} 

Kiedy użytkownik wyboru countrie nazywam tę funkcję, ale chcę, aby wyświetlić na rozpoczęcie pierwszego elementu z tej listy ... Z tej linii otrzymuję „Wybierz”, ale chcę pierwszy element z listy:

region.empty().append($('<option></option>').val('').text('Please select')); 

Jeśli skomentuję tę linię, otrzymam puste ... jakiejkolwiek pomocy?

Odpowiedz

2

Wierzę, że problem mógł być problemy z łańcuchowych. Zobacz dokumentację dla end().

Zostały wykonane empty() i append() na tym samym łańcuchu. Może to czasami powodować problemy z powodu algorytmu łączenia. Model ma dobry opis problemu.

Może to rozwiązać problem.

$.getJSON(url, { 
    countryId: $('#CountryID').val() 
}, function(response) { 
    // clear and add default (null) option 
    region 
     .empty() 
     .end() 
     .append($('<option>', { 
      value: '', 
      text: 'Please select' 
     })); 
    $.each(response, function(key, tocken) { 
     region.append($('<option>', { 
      value: tocken["Id"], 
      text: tocken["Name"] 
     })); 
    }); 
}); 
0

Należy ustawić atrybut selected w znaczniku opcji, aby ustawić wybraną opcję. Aby to zrobić, trzeba zmodyfikować na pętli tak:

for (var i = 0; i < response.length; i++) { 
    if(i==0) 
     region.append($('<option selected></option>').val(response[i].Id).text(response[i].Name)); 
    else 
     region.append($('<option></option>').val(response[i].Id).text(response[i].Name)); 
} 
0
var s_string = '<option>Select Value </option>'; 

for() // your for loop 
{ 
    s_string+=''; //your option tag code (appned fetch data in same variable and appned that variable after for loop end) 
} 

// appand s_string variable to your destination id or class (append) 
Powiązane problemy