2012-12-20 2 views
0

선택 값이 나를 혼란스럽게합니다. 사용자가 응용 프로그램에서 행을 편집 할 때 사용자가 값을 편집 할 수 있도록 jquery (빈 X라고 함)를 사용하여 태그를 복제하고 모달 창에 배치합니다. 동시에 나는 서버에서 JSON 개체 (데이터)를 취득하고 데이터베이스에 약자로 모달 창에서 현재 필드를 입력 :드롭 다운에 val() 대신`selected` 플래그를 설정하는 방법이 있습니까?

empty_X.find('#id_deals-1-currency').val(data[0].fields['currency']); 

지금 모달 프로그램, 사용자가 볼 수있는 방법 올바른 통화가 드롭 다운에서 선택됩니다.

그러나 Firebug로이 요소의 HTML을 검사하면 다른 그림이 나타나고 아무 것도 선택되어 있지 않습니다. 내가 폼을 서버에 보낼 때

<select id="id_deals-1-currency" name="deals-1-currency"> 
<option selected="selected" value="">---------</option> 
<option value="1">USD - $</option> 
<option value="2">EUR - €</option> 
<option value="3">GBP - £</option> 
</select> 

그리고 아직, 검증을 통해 에러가없고, 그 이전에 발을 통해되면서 통화가 같은 값이(). 인생은 좋습니다.

이 방법 자체로 작동하지만 문제가 있습니다. 사용자가 저장하기 전에 편집 모드로 돌아가 통화를 한 번 더 확인하려고한다면 어떻게해야할까요?

이 경우 데이터베이스의 값을 더 이상로드 할 수 없습니다. 그의 이전 로컬 변경 사항은 이제 중요합니다. 모달 창에있는 통화로 현재 레코드를 복제해야하므로 사용자는 이전에 변경 한 내용을보고 확인할 수 있습니다. 문제는 이제 사용자가 이전 단계에서 변경 한 통화를 볼 수 없다는 것입니다. 실제로 그는 빈 드롭 다운을 보게됩니다.

내 옵션에는 어떤 것들이 있습니까? val()을 사용하는 대신 selected 플래그를 실제 선택 항목으로 설정하는 방법이 있습니까?

+0

이'empty_X.find 같이 해봤 ('#의 id_deals-1 통화 : 선택') '? – Morpheus

답변

1

<select>을 복제하면 'selected'속성이있는 옵션이 실제 현재 객체 (value 속성 당) 대신 복제 된 객체의 현재 옵션이됩니다.

이 문제를 해결하려면 val()에 의해 반환 된 값에서 현재 선택된 옵션을 찾은 다음 복제하기 전에 선택한 특성을 적용하십시오. 이렇게하면 복제 후 값을 설정하지 않아도됩니다.

데모 :http://jsfiddle.net/DqADq/

코드 : (.x1<select>)

// simple cloning 
$('.x1:first').clone().appendTo('.out'); 

// setting selected attr before cloning 
var v = $('.x1:first').val(); 
$('.x1:first option').removeAttr('selected'); // remove 'selected' from all options 
$('.x1:first option').each(function() { 
    if($(this).attr('value') == v) { 
     $(this).attr('selected', true); // apply 'selected' to current option 
    } 
}); 
$('.x1:first').clone().appendTo('.out'); 
+0

샘플 코드를 제공 할 수 있습니까? – Houman

+0

내 편집 내용을 확인하면 분명해질 것입니다. – techfoobar

+0

'$ ('. x1 : 첫 번째 옵션 : 선택됨). attr ("selected", true);'는 복제본에서 작동하도록하려면 충분합니다. – pimvdb

관련 문제