4

계단식 드롭 다운이 3 개 있습니다. 영역 -> 영역 -> 영역부트 스트랩 다중 선택 드롭 다운 .val() 업데이트되지 않음

부트 스트랩 다중 선택 드롭 다운을 사용하고 있습니다.

영역 드롭 다운을 선택하면 각각의 영역은 에 바인딩되며 동시에 새로 바인딩 된 영역의 영역은 영역 드롭 다운에 바인딩됩니다.

여기 내 드롭 다운 초기화 코드입니다.

$('#ddlZone').multiselect({ 
      enableClickableOptGroups: true, 
      enableCollapsibleOptGroups: true, 
      enableFiltering: true, 
      includeSelectAllOption: true, 
      nonSelectedText: 'Select Zone', 
      enableCaseInsensitiveFiltering: true, 
      selectAllNumber: true, 
      onChange: function(option, checked,select) { 
       FillRegionsDropdown(); 
       FillTerritoriesDropdown(); 

      } 

다음은 위 기능의 코드입니다.

function FillRegionsDropdown() 
    { 


     var Zone=$('#ddlZone').val(); 
     if(Zone != null) 
     { 
      Zone= Zone.join(","); 
      $.ajax({ 
       type: "POST", 
       contentType: "application/json; charset=utf-8", 
       url: "@Url.Action("BindRegionsOnZonesAjax", "GeoMap")", 
       data: "{ZoneIds:'" + Zone + "'}", 

       success: function (Result) 
       { 


        $("#ddlRegion").html(""); 

        $('#ddlRegion').multiselect('refresh'); 
        $.each(Result, function (key, value) { 
         $("#ddlRegion").append($("<option></option>").val(value.Value).html(value.Text)); 
        }); 
        $('#ddlRegion').multiselect('rebuild'); 
        $("#ddlRegion").multiselect('selectAll', false); 
        $("#ddlRegion").multiselect('updateButtonText'); 

       } 


     }); 

    } 
} 

위의 코드는 영역 드롭 다운에서 영역 바인딩을 변경하고 모두 선택하도록 완벽하게 작동합니다.

하지만 문제는 영역 드롭 다운 변경으로 영역 드롭 다운을 바인딩하는 것입니다.

다음은 지역 드롭 다운 바인딩을위한 코드입니다. 여기에 $('#ddlRegion').val()

function FillTerritoriesDropdown() 
    { 

     var rgns=$('#ddlRegion').val(); 
     if(rgns != null) 
     { 
      rgns= rgns.join(","); 
      $.ajax({ 
       type: "POST", 
       contentType: "application/json; charset=utf-8", 
       url: "@Url.Action("BindTerritoriesOnRegionsAjax", "GeoMap")", 
       data: "{RegionIds:'" + rgns + "'}", 

      success: function (Result) 
      { 


       $("#ddlTerritory").html(""); 

       $('#ddlTerritory').multiselect('refresh'); 
       $.each(Result, function (key, value) { 
        $("#ddlTerritory").append($("<option></option>").val(value.Value).html(value.Text)); 
       }); 
       $('#ddlTerritory').multiselect('rebuild'); 
       $("#ddlTerritory").multiselect('selectAll', false); 
       $("#ddlTerritory").multiselect('updateButtonText'); 

      } 


      }); 

    } 
    } 

이 영역에 변화를 드롭 다운으로 인해 발생 새롭게 결합 된 지역의 값으로 업데이트되지 않습니다.

$('#ddlRegion').val()에는 여전히 초기 페이지로드 영역 값이 포함되어 있습니다.

저는 6 시간 이상이 시간을 맞았습니다.

은 어떤 하나

+0

내 인생의 형제. 고맙습니다 :) – Lakhae

답변

1

모두 FillTerritoriesDropdown()와 FillREgionsDropdown() 함수에 async:false을 사용해보십시오? 내가이 문제를 해결하는 데 도움이 될 수 있습니다. 즉 이들 2 가지 기능의 제어기에 대한 아약스 호출 (ajaxcall)에있다.