2012-05-07 2 views
0

사용자가 입력 할 필드가 있는데 jQuery에 전달하고 웹 서비스로 전달합니다.jQuery - listitem 컬렉션의 선택된 옵션을 얻으시겠습니까?

I에 의해 텍스트 상자의 값을 얻을 수 있습니다.

VAR 이름 = $ ("#의 MainContent_txtName") 발()

나는 데 문제가 있습니다 그 목록 항목으로 구성 다중 선택 수집. 나는이 서버 쪽을 할 수 있었다면 , 나는 같은 것을 할 것 :

foreach (ListItem li in listTitles) 
{ 
    if (li.Selected) 
    { 
    selectedValue += li.Value + ","; 
    } 
} 

을 그리고 이것은 나에게 선택 목록에서 선택된 값의 문자열을 줄 것입니다. jQuery에서 문제 해결에 어려움을 겪고 있습니다. 내가 선택한 목록 항목을 다시 가져 오지 않기 때문에 분명히 잘못된 것입니다

var titles = $("#MainContent_selectListTitles").val() 

을합니다. 옵션을 선택한 경우 검색 할 수 있다고 제안하는 게시물을 보았습니다.

var titles= $('#MainContent_selectListTitles option:selected'); 

내가했던 다음 일은 제목이 무엇인지 볼 경고를 팝업했다 : 그래서 나는이 시도. 그것은 단지 [물체, 물체]라고 말했습니다.

그래서 제 질문은 다음과 같습니다

  1. 는 문자열로 연결된 목록 항목 컬렉션에서 선택한 항목을 얻을 수 있습니까?

  2. 아니면 내 코드에서 포스트 백으로부터 모든 양식 값을 얻은 다음 jquery 함수를 호출하는 것이 더 낫습니까? 이것이 옵션이라면, 나는 이것을 시도했지만 실패했습니다. 방법을 찾을 수 없다고 알려줍니다. 그래서 jquery 함수는 버튼 이벤트의 포스트 백에서 올바르게 호출하지 않습니다.

THanks.

+0

좋아, 이제 제대로 작동하도록했습니다. jQuery를 처음 사용하기 때문에 용서해주십시오. 지금이가 경고를 팝업 각 (함수() { 경고 ($ (이)는 .text()). : $ ("확인 #의 MainContent_msClaimantType :") 내가 선택한 각 옵션을 얻기 위해 이것을 사용 각 선택한 옵션. 그래서 지금 질문은 어떻게 선택한 옵션을 변수로 연결합니까? 감사합니다. –

+0

옵션 # 1을 사용하면 # 1과 비슷합니다. –

답변

0

먼저 클라이언트 측에서 항목 ID가 "MainContent_selectListTitles"인지 확인하십시오. "소스보기"로 확인할 수 있습니다.

ID가 맞으면 다음을 수행하십시오.

$('#MainContent_selectListTitles').change(function() { 
     var str = ""; 
     $('#MainContent_selectListTitles option:selected').each(function() { 
       str += $(this).text() + " "; 
       //pass str value to your web service here. 
     }); 
    }).trigger('change'); 

변경 사항이있을 때마다이 기능이 호출되어 웹 서비스를 사용하게됩니다. 원하는 경우 위의 코드를 버튼 클릭 이벤트로 옮길 수 있습니다.

+0

감사합니다. Mikhail and Jonas. 실제로 작동 했었습니다. 내 방식이 실제로 효과가 있음을 입증하기 위해 노력했지만, 사실 Jonas가 가진 것과 매우 흡사합니다. 나는 바보였습니다. 각 문자열 (함수) 안에 var str = ""가있었습니다. 웹 서비스를 통해 전달하려고했을 때. 도움을 주셔서 감사합니다! –

1

경고에 [object, object]가있는 것은 놀랍지 않습니다. 선택한 항목 (실제로는 2 개의 항목)이 있었기 때문에 그 배열이 [object , 대상] 괜찮습니다.

<div> 
     <select multiple="multiple" id="mySelect"> 
      <option value="test1" selected="selected">Test 1</option> 
      <option value="test2">Test 2</option> 
      <option value="test3" selected="selected">Test 3</option> 
     </select> 
    </div> 

그리고 다음 스크립트 :

<script type="text/javascript"> 
    $.ready = function() { 
     var selectedItems = $("#mySelect option:selected"); 
     for (var i = 0; i < selectedItems.length; i++) { 
      alert("The value is: "+selectedItems[i].value + "; the text is: "+selectedItems[i].text); 
     } 
    } 
</script> 

아마 문제를 해결할 수

다음 HTML 마크 업을 가졌어요.

사실 수동으로 데이터를 바인딩하는 것은 큰 고통이며 knockout.js와 같은 최신 MVVM 라이브러리를 살펴 보도록 권합니다. 예 : http://knockoutjs.com/examples/controlTypes.html

관련 문제