2012-04-23 2 views
1

내 선택 목록을 채우고 있습니다. 필요에 따라 삭제되며 어떤 이유로 인해 MouseUp에서 목록이 사라집니다. 나는 목록을 클릭하면 내가 나를 목록에 아무것도를 선택 말도없이 종료 마우스 버튼을 놓으면 그러나 때요청시 채울 때 클릭 한 후 드롭 다운 목록이 사라집니다.

<select id="UserList" name="UserList" onclick="getCountries()">.....</select> 
. 
. 
. 
     function getCountries() { 
     $.post("/Users/GetUsersJson/", { id: userId }, 
     function (result) { 

      $.each(result, function (item) { 
       $("#UserList").append(
       $("<option></option>").text(result[item].UserName).val(result[item].Id) 
       ); 
      }); 

     }, "json"); 
    } 

가 잘 채워됩니다 :

코드 목록을 채 웁니다. 나는 무슨 일이 일어나는지 알 수 없다.

실마리가 있습니까?

+0

클릭 이벤트에서이 작업을 수행하는 이유는 무엇입니까? 자동으로 한 번만 수행되도록로드하는 것이 좋지 않겠습니까? 또는 폼의 다른 부분에있는 변수에 의존하는 경우 다른 변수가 변경 될 때이를 호출하는 것이 좋습니다. – Jonathan

+0

그 방법은 처음부터 시작했는데 드롭 다운 메뉴에로드되는 데이터의 양이 "페이지 속도를 늦출 수 있습니다"라는 이유로 클릭 이벤트로 다시 수행하라는 명령을 받았습니다. – Shenaniganz

+0

할 수 있으면 대신 mousedown을 시도하고 제대로 작동하는지 확인하십시오. 또한 모든 항목을 다시로드하지 못하도록 방지하거나 다시 채우기 전에 드롭 다운을 지우는 방법이 필요합니다. – Jonathan

답변

1

드롭 다운 목록이 사라지는 원인을 볼 수 없으므로 경고 상자를 추가하여 문제를 일으키는 행을 정확하게 결정할 수 있습니다. 즉, jquery 각 메서드를 사용하여이 가능하다는 것을 알고 있어야합니다.

function getCountries() { 
    $.post("/Users/GetUsersJson/", { id: userId }, 
    function (result) { 

     $.each(result, function (index, item) { 
      $("#UserList").append(
      $("<option></option>").text(item.UserName).val(item.Id) 
      ); 
     }); 

    }, "json"); 
} 

코드를 좀 더 읽기 쉽게 만듭니다.

+0

div Ajax로드에로드 할 목록을 설정했습니다. 나는 누군가가 그것이 무엇이 될 수 있는지를 알기를 바랍니다. – Shenaniganz

+0

글쎄 나는 계속 당신을 도울 것이지만, 내가 말하고자하는 것은이 코드가 잘 작동해야한다는 것인데, 이는 다른 무엇인가 잘못되었다는 것을 의미한다. 나는 더 이상의 정보가 없어도 무엇을 말할 수 없었다. –

+0

그 밖의 어떤 영향을 미칠 수 있는지 생각조차 할 수 없다. ... 목록은 Ajax.ActionLink() success : 이벤트에서 가져온 모달 JQuery .dialog() 내부에 표시된다. Hmmmm .... – Shenaniganz

0

HTML :

<select id="UserList" name="UserList"></select> 

jQuery를 : 팝업 당신이 드롭 다운을 클릭하면, 그것은 또 다른 GET 요청을 만들 것 때문에 사라

이유 :

$(document).ready(function(e){ 

    $('#UserList').click(function(e){ 
     if($(this).children().length == 0){ 
      $.post("/Users/GetUsersJson/", { id: userId }, 
      function (result) { 

       $.each(result, function (item) { 
        $("#UserList").append("<option val='"+result[item].Id+"'>"+result[item].UserName+"</option>"); 
       }); 

      }, "json"); 
     } 
    }); 
}); 

위를보십시오 JSON 데이터를 읽고 SELECT를 다시 채 웁니다. 내에서 <option> 태그가 없는지 확인하기 위해 children() 길이를 확인했습니다.

관련 문제