2013-03-12 7 views
1

이전에 수 백 번 해본 적이 있지만이 인스턴스에서는 작동하지 않습니다.JQuery 설정을 선택 항목으로 선택 - 업데이트하지 않음

나는 형식이 있습니다. 클라이언트 드롭 다운에서 선택하고 양식의 나머지 필드를 업데이트합니다.

simples.

ajax 호출을 사용하여 양식 데이터를 json 개체로 반환하고 다음 jquery를 사용하여 화면상의 양식을 업데이트합니다. 필드는 name이 출력 정의와 일치하도록 설정됩니다 (아래 k).

$.each(out, function(k,v){ 
     if($('form input[name="'+k+'"]').attr('type') == 'text'){ 
      $('form input[name="'+k+'"]').val(v); 
     }else if($('form input[name="'+k+'"]').attr('type') == 'hidden'){ 
      $('form input[name="'+k+'"]').val(v); 
      $('form .'+k).text(v); 
     }else if($('form input[name="'+k+'"]').attr('type') == 'checkbox'){ 
      if(v == '1') { 
       $('form input[name="'+k+'"]').attr('checked', true); 
      }else{ 
       $('form input[name="'+k+'"]').attr('checked', false); 
      } 
     }else 
     $('form select[name="'+k+'"] option[value="'+v+'"]').attr('selected', true); 

     $('form input[name="old_client_name"]').val(out.client_name); 
    }); 

나는 검사 요소를 사용하는 경우, 실제로 올바른 옵션은 사용자의 관점이 반영되도록 선택 상자를 업데이트하지 않는 selected="selected" 값을 부여되었지만 그 중 하나 개를 선택 필드에서 볼 그래서 할 수있는 사용자는 이것을 선택한 것으로 볼 수 없으며 양식을 처리 할 때 값이 설정되지 않은 것처럼 작동합니다.

저는이 jq 1.9.1을 사용하고 있습니다 만 최근에는이 특정 프로젝트에서만 업그레이드되었습니다.

제안 사항?

답변

4

시도 :

$('form select[name="'+k+'"] option[value="'+v+'"]').attr('selected', 'selected'); 

나 : 명확성을 위해

$('form select[name="'+k+'"] option[value="'+v+'"]').prop('selected', 'selected'); 

이, 당신은 항상 = 선택 설정해야합니다 "선택"다만 사실이 아니다.

+0

화려한! 두 번째 작품. 나는'.prop'에 대한 설명을 읽었으며 attr을 사용하면 실제 값이 변경되지 않는다고 제안합니다. 이상하게 여겨져 ... – TH1981

+0

.prop는 비교적 새로운 방법입니다 – BBagi

1

.attr('selected', true); 

JQuery와 1.6.x 이상인 경우에 새로운

.prop('selected', true); 

가 +

1

그냥 완전성 '을 위해, 당신은 또한이 방법으로 확인할 수 있습니다에 대한 교체 :

$('form input[name="'+k+'"]:selected').length == 1 
관련 문제