반응형
블로그 이미지
개발자로서 현장에서 일하면서 새로 접하는 기술들이나 알게된 정보 등을 정리하기 위한 블로그입니다. 운 좋게 미국에서 큰 회사들의 프로젝트에서 컬설턴트로 일하고 있어서 새로운 기술들을 접할 기회가 많이 있습니다. 미국의 IT 프로젝트에서 사용되는 툴들에 대해 많은 분들과 정보를 공유하고 싶습니다.
솔웅

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

카테고리


반응형
Assign and retrieve the selected items in a selection list



Selection list already present in the HTML


selection list에서 select 된 값을 retrieve 하기 위해 <select> element에 jQuery 의 val () method 를 사용합니다. 그리고 새로운 selection 을 indicate 하기 위해 val (value)를 사용합니다. multiple-selection list 의 경우에는 value 는 값들의 배열입니다. (아무것도 select 되지 않으면 empty 입니다.)


Retrieve the values associated with selected items


<!DOCTYPE html>

<html> 

<head> 

  <meta name=viewport content="user-scalable=no,width=device-width" />

  <link rel=stylesheet href=jquery.mobile/jquery.mobile.css />

  <script src=jquery.js></script>

  <script src=jquery.mobile/jquery.mobile.js></script>

</head> 


<body> 


<div data-role=page id=home>

  <div data-role=header>

    <h1>Home</h1>

  </div>


  <div data-role=content>

    <span> Choose an apartment type: </span>

    <select data-native-menu=false multiple=multiple>

      <option value=1> 1 bedroom </option>

      <option value=2 selected=selected> 2 bedrooms </option>

      <option value=3 selected=selected> 3 bedrooms </option>

      <option value=4> 4 bedrooms </option>

      <option value=5> 5 bedrooms </option>

    </select>

  </div>

</div>


</body>

</html>


<script>


alert ($("select").val ());   // displays an array [2, 3]

$("select").val ([1, 2]);

alert ($("select").val ());   // displays an array [1, 2]


</script>


tistory470_01.html







Selection list dynamically created


val () and val (value) methods 는 selection list의 값을 retrieve 하거나 assign 하기 위해 사용됩니다. 그런데 아마 selection list 의 refresh 가 일어나지 않는 경우가 있을 겁니다. 이럴 때는 selectmenu ("refresh") method 를 사용할 필요가 있습니다.

jQuery 에서 리스트를 다이나믹하게 생성되는 것을 생각해 보세요. selectmenucreate event 와 selection list 에 새로운 값을 assign 하는 것을 보겠습니다.


Assign a value to a selection list dynamically created


<!DOCTYPE html>

<html> 

<head> 

  <meta name=viewport content="user-scalable=no,width=device-width" />

  <link rel=stylesheet href=jquery.mobile/jquery.mobile.css />

  <script src=jquery.js></script>

  <script src=jquery.mobile/jquery.mobile.js></script>

</head> 


<body> 


<div data-role=page id=home>

  <div data-role=header>

    <h1>Home</h1>

  </div>


  <div data-role=content>

    <span> Choose an apartment type: </span>

  </div>

</div>


</body>

</html>


<script>


var html = "";

html += "<select data-native-menu=false>";

html +=   "<option value=1> 1 bedroom </option>";

html +=   "<option value=2> 2 bedrooms </option>";

html +=   "<option value=3> 3 bedrooms </option>";

html +=   "<option value=4> 4 bedrooms </option>";

html +=   "<option value=5> 5 bedrooms </option>";

html += "</select>";


$("#home div:jqmData(role=content)").append (html);


$("select").bind ("selectmenucreate", function ()

{

  $("select").val (4);

  $("select").selectmenu ("refresh");

});


</script>


tistory470_02.html






만약 selectmenu ("refresh") instruction을 생략하면 이 리스트는 refresh 되지 않을 겁니다. 그러면 selected value 는 display 되지 않을 겁니다. (이럴 경우 리스트의 첫번째 값이 디폴트로 select 될 겁니다.)


다음 프로그램은 selectmenu ("refresh") instruction을 사용하지 않고 구현한 프로그램입니다.


Assign a value to a selection list without using selectmenu ("refresh")


<!DOCTYPE html>

<html> 

<head> 

  <meta name=viewport content="user-scalable=no,width=device-width" />

  <link rel=stylesheet href=jquery.mobile/jquery.mobile.css />

  <script src=jquery.js></script>

  <script src=jquery.mobile/jquery.mobile.js></script>

</head> 


<body> 


<div data-role=page id=home>

  <div data-role=header>

    <h1>Home</h1>

  </div>


  <div data-role=content>

    <span> Choose an apartment type: </span>

  </div>

</div>


</body>

</html>


<script>


var html = "";

html += "<select data-native-menu=false>";

html +=   "<option value=1> 1 bedroom </option>";

html +=   "<option value=2> 2 bedrooms </option>";

html +=   "<option value=3> 3 bedrooms </option>";

html +=   "<option value=4> 4 bedrooms </option>";

html +=   "<option value=5> 5 bedrooms </option>";

html += "</select>";


$("#home div:jqmData(role=content)").append (html);

$("select").val (4);


</script>


tistory470_03.html



이 경우에는 selectmenucreate event 를 사용하지 않습니다. 그래도 작동을 합니다. selection list 에 값이 assign 될 떄 리스트는 아직 생성되지 않았습니다. 그래서 최종 display 되기 전에 수정될 수 있는 겁니다. selectmenucreate event 에서 동작할 때는 리스트가 생성된 이후였습니다. 그래서 어떤 변화가 있으면 refresh 가 필요한 겁니다.



반응형