2015年4月14日 星期二

[Jquery] 對 select tag 的操作語法及範例

工作時會用到,所以集結資料筆記一下,方便查詢

範例 html
<!DOCTYPE html>
<html>
<head>
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
  <meta charset="utf-8">
  <title>select option</title>
</head>
<body>
<select id="select" name="items">
  <option value="1">一</option>
  <option value="2">二</option>
  <option value="3">三</option>
</select>
<div id="show" />
</body>
</html>

1. 取得選擇項目的文字與值
/*----- 單選 -----*/
//  取得被選擇項目的文字
$("#select").find(":selected").text();
$("#select").find(":selected").prop("text");

//  取得被選擇項目的值
$("#select").find(":selected").val();
$("#select").find(":selected").prop("value");

/*----- 多選 -----*/
//  使用迴圈取得所有被選擇的項目
$("#select").find(":selected").each(function() {
    alert(this.text);    //  文字
    alert(this.value);   //  值
});

2. 增加項目
$("#select").append($("<option></option>").attr("value", "值").text("文字"));
$("#select").append($("<option></option>").prop("value", "值").text("文字"));

// 產生 Option 項目
function GetOption(text, value) {
    return "<option value = '" + value + "'>" + text + "</option>"
}

3. 移除選擇的項目
//  移除選擇的項目
$("#select").find(":selected").remove();

//  移除全部的項目
$("#select option").remove();

4. 移除選擇項目後,防止捲軸移到最上面
//  先取得要移除項目的 index
var selectIndex = $("#select").find(":selected").index();

//  移除選擇的項目
$("#select").find(":selected").remove();

//  判斷移除項目後,原先的index是否還有option,有的話就直接將此option設定為選取狀態
//  捲軸就不會往上跑了
if ($('#select option').get(selectIndex) != null) {
    $('#select option').get(selectIndex).selected = true;
}
else {
    //  沒有項目的話,判斷select理是否還有option
    //  有的話,表示移除的項目為最後一個,就設定上一個option為選取狀態
    if ($('#select option').length > 0) {
        $('#select option').get(selectIndex - 1).selected = true;
    }
}

5.Select改變時的事件
$("#select").change(function(){
  $("option:selected",this).each(function(){
    alert(this.value);
  });
});

6.取得index
$("#select").find(":selected").index();

7.取得option 長度
$("#select option").length;

8.取得在Select中最後一個的index
$("#select option:last").index();

9.取得某一特定的值 => eq(第幾個)
$("#select option").eq(2).val();

10.設定某一option 為 selected
$("#select option").eq(2).prop("selected",true);

Ref:
JQuery對select的操作[完整版] => http://goo.gl/CSbZ7g


[jQuery]使用jQuery對 select 的操作 => http://goo.gl/MTwlWo

Jquery Select操作方法集合脚本之家特别版 => http://goo.gl/OuFQW2

工具:
線上 JS 操作練習 => http://jsbin.com

小範例:

select Option 的新增

【畫面】

image

【CODE】

<!DOCTYPE html>
<html  lang="zh-Hant-TW">
<head>
<title>測試</title>
<script src="
https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
</head>
<body>
<input type="button" id="demo" value = "Demo" /><br />
<select id="mySelect"></select>
 
<script type = "text/javascript" src = "
http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.1.min.js"></script>
<script type="text/javascript">
    var fruits = new Array();
    fruits[0] = { Text: "Mango", Value: "1" };
    fruits[1] = { Text: "Banana", Value: "2" };
    fruits[2] = { Text: "Orange", Value: "3" };
    fruits[3] = { Text: "Grapes", Value: "4" };
    $("#demo").live("click", function () {
        //Clear the HTML Select DropdownList
        $("#mySelect option").remove();
 
        //Add Default Option
        $("#mySelect").append(GetOption("Please select fruit", "0"));
 
        //Loop through array and add options
        $.each(fruits, function (index) {
            $("#mySelect").append(GetOption(fruits[index].Text, fruits[index].Value));
        });
    });
    function GetOption(text, value) {
        return "<option value = '" + value + "'>" + text + "</option>"
    }
</script>
</body>
</html>

兩個 select option 的新增與移除,點選 <> 按鈕將兩邊資料互換

【畫面】

image

【CODE】

<!DOCTYPE html>
<html  lang="zh-Hant-TW">
<head>
<title>測試</title>
<script src="
https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>
    var items = new Array();
    items[0] ={Text: "一", Value: "1"};
    items[1] ={Text: "二", Value: "2"};
    items[2] ={Text: "三", Value: "3"};
    items[3] ={Text: "四", Value: "4"};
    items[4] ={Text: "五", Value: "5"};
    $(function(){
        $("#changeOption").click(function(){
            var selected1 = $("select[name=list_box1]");
            var selected2 = $("select[name=list_box2]");
            var selectedVal1 = $(selected1).find(":selected").val();
            var selectedVal2 = $(selected2).find(":selected").val();
            var selectedText1 = $(selected1).find(":selected").text();
            var selectedText2 = $(selected2).find(":selected").text();
            if(selectedVal1 != "" && selectedVal1 != undefined){
                $(selected2).append(GetOption(selectedText1,selectedVal1));
                selected1.find(":selected").remove();
            }
            if(selectedVal2 != "" && selectedVal2 != undefined){
                $(selected1).append(GetOption(selectedText2,selectedVal2));
                selected2.find(":selected").remove();
            }           
        });
        $("#showButton").click(function(){
            var selected1 = $("select[name=list_box1]");
            var selected2 = $("select[name=list_box2]");
            var showP1 = $("#showP1");
            var showP2 = $("#showP2");
            show(selected1,showP1);
            show(selected2,showP2);
        });
        $("#reset").click(function(){
            var selected1 = $("select[name=list_box1]");
            var selected2 = $("select[name=list_box2]");
            $(selected1).find("option").remove();
            $(selected2).find("option").remove();
            $.each(items, function(index){
                $(selected1).append(GetOption(items[index].Text, items[index].Value));
            });
        });
    });
        function show(SelectOption , showObject){
            var selected = SelectOption;
            var showP = showObject;
            var showText ="";
            $(selected).find("option").each(function(){
                showText = showText + this.value + ",";
            });
            if(showText.lastIndexOf(",") > -1){
                showText = showText.substr(0,showText.length-1);
            }
                $(showP).html(showText);       
        }
   
        function GetOption(text, value) {
        return "<option value = '" + value + "'>" + text + "</option>"
    }
</script>
</head>
<body>
<div>
<select name="list_box1" size="5">
    <option value="1">一</option>
    <option value="2">二</option>
    <option value="3">三</option>
    <option value="4">四</option>
    <option value="5">五</option>
</select>
<input id="changeOption" type="button" value="< >">
<select name="list_box2" size="5">
</select>
<br>
<input id="showButton" type="button" value="顯示 Option" />
<input id="reset" type="button" value="重置" />
<br>
<p>Option1的值</p>
<p id="showP1"/>
<p>Option2的值</p>
<p id="showP2"/>
</div>
</body>
</html>

沒有留言 :

張貼留言