2012-03-29 2 views
0

javascript + jQuery를 사용하는 다른 select 요소의 값에 따라 동적으로 채울 요소가 있습니다. 선택한 '옵션'옵션을 감지하는 '용지'선택 문제가 있습니다. 동적으로 추가되기 때문에 변경 사항을 감지하고 'selected'속성을 수동으로 강제 설정해야합니까?동적으로 채워진 선택 옵션에서 '선택됨'트리거

<select name="pricing" id="pricing"> 
    <option value="Standard White">Standard White</option> 
    <option value="Classic Paper">Classic Paper</option> 
    <option value="Designer Paper">Designer Paper</option> 
    <option value="Premium Paper">Premium Paper</option> 
</select> 
<select name="paper" id="paper"></select> 

그리고 '#pricing'변경 때 실행되는 자바 스크립트 함수 : 여기

마크 업의

function paperPopulate() { 
    var type = $('#pricing').val(); 
    var standardPaper = ['Standard White', 'Smelly White']; 
    var classicPaper = ['Ivory Gloss', 'Silly Gloss']; 
    var designerPaper = ['White Smooth', 'White Garbage']; 
    var premiumPaper = ['Glacier Faucet', 'Desert Stink']; 
    var data = ''; 
    var papers = {Standard:standardPaper, Classic:classicPaper, Designer:designerPaper, Premium:premiumPaper}; 
    $.each(papers, function(term, papers) { 
     if (type.indexOf(term) !== -1) { 
      for (var i in papers) data += '<option value="'+ papers[i] +'">'+ papers[i] +'</option>'; 
     } 
    }); 

    $('#paper').html(data); 
} 

속성이 결코 추가하지 않기 때문에이 서버 측 코드 나는 가게에 실행 양식 데이터는 '용지 선택'이 선택한 것을 결코 감지하지 못합니다.

편집 : 자바 스크립트를 두 번 확인한 후, 페이지 자체에서 옵션이 선택되었음을 알지만 속성은 표시되지 않습니다. 여기서 중요한 문제는 서버 측 코드 (VB.NET)가 선택된 값을 볼 수 없다는 것입니다.

+0

서버는 무엇을 얻고 있습니까? – Th0rndike

+0

아무 것도 반환하지 않음 –

답변

0

select 요소에서 옵션을 선택하지 않으면 기본적으로 첫 번째 옵션이 선택되고 양식을 제출할 때 양식 데이터와 함께 게시됩니다.

선택한대로 옵션을 설정하려면 val() jQuery 메서드를 사용하여 선택 옵션의 값을 전달하여 선택합니다.

$('#paper').val('valueToSelect'); 
+0

.val() 처리기는 어떤 이벤트를 사용합니까? # paper.change()에서 실행합니까 아니면 .live()를 사용하여 변경 사항을 수신합니까? –

+0

코드의 아무 곳에 나 설정할 수 있습니다. – ShankarSangoli

+0

예, 코드의 어느 위치에서나 설정할 수 있습니다. 나는 그 값을 언제 적용 할 것인지를 묻고있다. 선택에 대한 변경 사항을 기다려야합니까? option.click()에서? 나는 이것을 처리 할 수있는 다양한 방법이 있다고 가정하고 있지만, 어떤 것이 최선인지는 모른다. –

0

jQuery에서이를 수행하는 훨씬 좋은 방법이 있습니다. #paper이 선택 목록이라고 가정하면 다음과 같이 작동해야합니다.

$("#paper").empty(); 

$.each(papers, function(term, papers) { 
    if (type.indexOf(term) !== -1) { 
     for (var i in papers) { 
      //you can select the option here if needed 
      $("#paper").append(
       $("<option>", { value : papers[i], text : papers[i] }) 
      ); 
     }    
    } 
}); 

//you can also set the selected value here 
$("#paper").val("..."); 
+0

그게 도움이, 내가 추가하면 내가 선택을 취소 할 때마다 그것이 변경 될 필요가있다. 즉, 변경 사항을 감지하지 못하고 선택한 속성을 적용하는 선택을 수정하겠습니까? –

+0

자바 스크립트에서 값을 수동으로 설정하고 싶지는 않습니다. 선택이 정상적인 선택 동작처럼 동작하기를 원합니다. 드롭 다운을 클릭하고 옵션을 클릭하고 'selected'속성을 한 번 클릭 한 다음 서버가 검색하도록하십시오. –

+0

저는 솔직히 확신하지 못합니다. 그러나 이것은 jQuery를 사용하여 select에 옵션을 추가하는 "받아 들인"방법입니다. 옵션을 삭제하는 방법을 보여주기 위해 답을 수정하고 있습니다. –

관련 문제