2012-07-26 1 views
0

이 한 가지 문제가 최근에 나를 미치게했습니다. .each()에서 나는 select 요소를 반복하고이를 jquery UI 콤보 박스로 변환합니다. 그건 잘 작동합니다. 선택한 값을 설정할 때 문제가 발생합니다. 내 같은. 각() 내가 선택한 값을 내가 다른 곳에서 얻을 수있는 가치로 설정하려고합니다.jquery ui combobox 선택기 이름으로 변수가있는 선택된 항목을 설정하십시오.

$("#" + e + " [role='select']").each(function() { 
    $(this).combobox(); 
    var selId = '#ContactCategoryId'; 
    var cellv = '9'; 
    $(selId+" option[value=" + cellv + "]").attr("selected", 'true'); 
}); 

이제 위 코드는 완벽하게 작동하며 콤보 상자의 값을 9로 설정하고 텍스트 값을 "셀 번호"로 설정합니다. 이제 아래 코드가 실패하고 오류는 발생하지 않지만 선택한 값은 변경되지 않습니다. 나는 아래의 방식으로 현재 select 요소에서 ID를 얻는 것이 필요하다 : $ (this) .attr ('id'). 나는 많은 다른 것들을 시도해 봤습니다. 누군가 제게 빛을 보여줄 수 있습니까?

$("#" + e + " [role='select']").each(function() { 

    $(this).combobox(); 
    var selId = '#'+$(this).attr('id'); 
    var cellv = '9'; 
    $(selId+" option[value=" + cellv + "]").attr("selected", 'true'); 
}); 

저는 JQuery 1.7과 최신 JQuery UI 인 Thanx를 사용하고 있습니다!

확인이 문제가 정말 솔루션을 찾은 후 지금 나를 괴롭혔다 : 내 솔루션입니다 때문에 내 명성 제임스


나는 그래서 여기에 내 자신의 질문을 asnwer 할 수 없습니다. 일반적으로 jquery 플러그인에 문제가있을 때 나는 소스를보고 그걸 가지고 놀아 본다.하지만이 문제에 대해서는 시도하지 않았고 비용이 많이 든다. 해결책은 매우 간단합니다.

 $("#" + e + " [role='select']").each(function() { 
      if($(this).css('display')=='none') 
      { 
       $(this).combobox("destroy"); 
      } 
      $(this).combobox(); 
     }); 

내가 지금 생각한 소스를 보면 어딘가에서 그 가치를 얻어야합니다. 그래서 수동으로 값을 설정합니다

   $(this).val('9') 

그것은 형태의 제 1 개구에 일을하지만, 다음 두 번째없는 나는 그것이 존재한다면 그것을 파괴하고 콤보 상자를 만드는 데 필요한 I을 깨달았다. 당신의 전문가가 더 나은 솔루션을 가지고있을 거라 확신하지만이게 잘 되었어.

+0

'$을 할 수 있습니까? – ManseUK

+0

안녕하세요 ManseUK, 고맙습니다. 그래, 그게 문제가 될 수도 있지만 실제로 콘솔에 변수의 정확한 값을 기록 할 수 있다면 그것은 내 선택의 이름입니다. 나는 원래의 질문 – jjay225

+0

을 업데이트하여'$ ('select')해야 할 옵션을 선택했다. '($ 9');'그래서 $ (this) .val (cellv)' ? – ManseUK

답변

0

콤보 박스가 실제로 select 요소가 아니기 때문에 상상하지 못했을 것이다 ... 콤보 박스 요소를 업데이트하면 select 요소를 업데이트한다. 하지만 다른 방법은 주위에 ... 난 일을 볼 수있는 유일한 방법은 그것을 콤보 상자를 파괴하고 재현하는 것입니다 ...이 작품 :

$("#divselect").children('select').each(function() { 

    $this = $(this); // cache $(this) 
    var cellv = '0'; // new value 

    // Destroy the combobox 
    $this.combobox("destroy"); 

    // Unselect the currently selected option 
    $("option:selected",$this).removeAttr("selected"); 

    // Select the option you want to select 
    $("option[value='"+cellv+"']",$this).attr("selected", "selected"); 

    // Create the combobox again 
    $this.combobox(); 

}); 

Working example here

는 또한 주 .. 당신이 이렇게하지 않아도됩니다.

$("#showAnyCity").click(function() { 
    checkdiv(); 
}); 

당신은 당신이 당신의 모든 코드를 게시 할 수 있습니다 .... (이)`당신이 생각하는 것 아마되지 않습니다

$("#showAnyCity").click(checkDiv); 
+0

피드백 ManseUK 고맙습니다. 고맙습니다. 그래, 내 업데이트 된 답변에서 나는 결국 콤보 박스가 초기 생성 이후에 결코 다시 생성되지 않을 것이라는 것을 깨달았으므로 나는 그것을 파기하는 동일한 경로를 따랐다. – jjay225