簡體   English   中英

選擇時填寫下拉列表

[英]Fill DropDown List on selection

大家好,我已經為我的項目工作了幾個月。 現在,基於對另一個名為(drpDocente)的下拉列表的選擇,我試圖填充名為(drpIdCorsi)的下拉列表。

這是我的JSON對象的組成方式:

listaCorsi = 
 [
   {nomeCorso: "some course name"},
   {emailDocente: "some email"},
 ] 

我已經用AJAX請求加載了一個JSON對象(正確填充)。 現在,我試圖導航我的JSON對象並填充下拉列表,但是它不起作用。

這是第一個功能:

var listaCorsi = selezionaCorsoDocenti();

var listaCorsiDDL = '';
$('#drpDocente').on('change',function()
{ 
    docente = $('#drpDocente').val(); 
    docente = docente.trim();
    docente= docente.split("-")[0];//gets the email of the professor

    console.log(listaCorsi);
    console.log(docente);
    console.log(listaCorsi);
    if(!$.isArray(listaCorsi))
        listaCorsi = [listaCorsi];
    $.each(listaCorsi,function(key,value)
    {
        console.log(value);
        if(docente == value.emailDocente)
            listaCorsiDDL += '<option value="">' + value.nomeCorso + '</option>';
    });

    $('#drpIdCorsi').append(listaCorsiDDL);

}).change();

這是上面調用的函數(它確實有效,但是我無法填寫第二個下拉列表,因為它在結果中顯示為undefined,或者在第二個下拉列表中均未顯示)

function selezionaCorsoDocenti()
{
var listaCorsi = [{}];
$.get('selezionaCorsiPerDocente',function(responseJson)
{
    if(responseJson != null)
    {
        var i = 0;
        $.each(responseJson,function(key,value)
        { 
                listaCorsi[i] = [{nomeCorso: value.NOME_CORSO}, {emailDocente: value.EMAIL}];
                i = i + 1;  
        });
    }
    else
        alert("AJAX FAILED");
});
return listaCorsi;
}

我想這樣填寫第二個下拉列表:

if(docente === value.EMAIL)
   course += '<option value="">' + value.NOME_CORSO + '</option>
$('#drpIdCorsi').append(course);

函數selezionaCorsoDocenti()很好 問題是當我使用$ .each()遍歷該對象時,JSON對象listaCorsi會為該對象的某個字段打印未定義的內容

您的主要問題在以下行中:

var listaCorsi = selezionaCorsoDocenti();

$ .get('selezionaCorsiPerDocente',....是ajax調用,因此是異步的。您需要等待才能得到結果。

此外,發生更改時,您需要清空下拉菜單。 從:

$('#drpIdCorsi').append(listaCorsiDDL);

至:

$('#drpIdCorsi').empty().append(listaCorsiDDL);

 function selezionaCorsoDocenti() { var listaCorsi = [{}]; return $.get('https://gist.githubusercontent.com/gaetanoma/5f06d1dbd111ff6a7778cd6def6b1976/raw/037587e927ac297e1f4907364898ead22ed03a0d/selezionaCorsiPerDocente.json',function(responseJson) { responseJson = JSON.parse(responseJson); if(responseJson != null) { var i = 0; $.each(responseJson,function(key,value) { listaCorsi[i] = [{nomeCorso: value.nomeCorso}, {emailDocente: value.EMAIL}]; i = i + 1; }); } }); } selezionaCorsoDocenti().then(function(x) { listaCorsi = JSON.parse(x); $('#drpDocente').trigger('change'); }); $('#drpDocente').on('change',function(e) { var listaCorsiDDL = ''; docente = $('#drpDocente').val(); docente = docente.trim(); docente= docente.split("-")[0];//gets the email of the professor if(!$.isArray(listaCorsi)) listaCorsi = [listaCorsi]; $.each(listaCorsi,function(key,value) { if(docente == value.emailDocente) listaCorsiDDL += '<option value="">' + value.nomeCorso + '</option>'; }); $('#drpIdCorsi').empty().append(listaCorsiDDL); }); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <select id="drpIdCorsi"></select> <select id="drpDocente"> <option>docente1@mail.edu</option> <option>docente2@mail.edu</option> <option>docente3@mail.edu</option> </select> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM