我有两个下拉框,分别为:
下拉框一
<select onchange="A(this)" name="STy1" id="STy1" size="1"><option value="sn" selected="true">Family/Last Name</option><option value="cn">Full Name</option><option value="id">ID</option></select>
和下拉框二
<select name="SLk1" id="SLk1" size="1"><option value="OBW">That Begins With</option><option value="OOS">That Contains</option><option value="OEM">That Equals</option></select>我现在想知道怎么写js的function A(obj),来实现以下功能。
1)选中下拉框一的ID,下拉框二中就只剩“That Equals”选项。
2)选中下拉框一的“Family/Last Name”或者“Full Name”,下拉框二中所有选项都可选,默认选中“That Begins With”。非常感谢!

解决方案 »

  1.   

    <select onchange="A(this)" name="STy1" id="STy1" size="1">
    <option value="sn" selected="true">Family/Last Name</option>
    <option value="cn">Full Name</option>
    <option value="id">ID</option>
    </select>
    <select name="SLk1" id="SLk1" size="1">
    <option value="OBW">That Begins With</option>
    <option value="OOS">That Contains</option>
    <option value="OEM">That Equals</option></select>
    <script type="text/javascript">
        var opt = [];
        function A(obj) {
            var sel = document.getElementById('SLk1');
            if (obj.value == 'id') {
                if (opt.length == 0) { opt[0] = sel.options[0]; opt[1] = sel.options[1]; } //存储起来,IE不支持option的style="display:none"
                //删除1,2项
                sel.removeChild(sel.options[0]); 
                sel.removeChild(sel.options[0]);
            }
            else if (sel.options.length == 1) { //重新添加1,2项
                sel.insertBefore(opt[0],sel.options[0]);
                sel.insertBefore(opt[1], sel.options[1]);
                sel.selectedIndex = 0;
            }
        }
    </script>
      

  2.   

    <html>
    <head>
        <title>demo</title>
    </head>
    <body>
        <select onchange="A(this)" name="STy1" id="STy1" size="1">
            <option value="sn" selected="selected" show="OBW,OOS,OEM" defvalue="OBW">Family/Last Name</option>
            <option value="cn" show="OBW,OOS,OEM" defvalue="OBW">Full Name</option>
            <option value="id" show="OEM" defvalue="OEM">ID</option>
        </select>
        <select name="SLk1" id="SLk1" size="1">
            <option value="OBW">That Begins With</option>
            <option value="OOS">That Contains</option>
            <option value="OEM">That Equals</option>
        </select>
        <script type="text/javascript">
            var Ori = {
                STy1: "STy1",
                SLk1Id: "SLk1",
                SLk1: [],
                Init: function() {
                    var obj = document.getElementById(this.SLk1Id);
                    var list = [];
                    if (obj) {
                        for (var i = 0; i < obj.options.length; i++) {
                            list[i] = { text: obj.options[i].text, value: obj.options[i].value };
                        }
                        this.SLk1 = list;
                        A(document.getElementById(this.STy1));
                    }
                },
                Show: [],
                ShowDefIndex: 0,
                SetShow: function() {
                    var obj = document.getElementById(this.SLk1Id);
                    if (obj) {
                        obj.options.length = 0;
                        for (var i = 0; i < this.Show.length; i++) {
                            obj.options[i] = new Option(this.Show[i].text, this.Show[i].value);
                        }
                        obj.selectedIndex = this.ShowDefIndex;
                    }
                }
            };
            function A(obj) {
                var show = obj.options[obj.selectedIndex].getAttribute("show");
                var defvalue = obj.options[obj.selectedIndex].getAttribute("defvalue")||"";
                if (show) {
                    Ori.ShowDefIndex = 0;
                    show = show.split(",");
                    Ori.Show.length = 0;
                    var index = 0;
                    for (var i = 0; i < show.length; i++) {
                        for (var j = 0; j < Ori.SLk1.length; j++) {
                            if (Ori.SLk1[j].value == show[i]) {
                                if (defvalue == show[i]) {Ori.ShowDefIndex = index; }
                                Ori.Show[index] = { text: Ori.SLk1[j].text, value: Ori.SLk1[j].value };
                                index++;
                                continue;
                            }
                        }
                    }
                    Ori.SetShow();
                }
            }
            window.onload = function() {
                Ori.Init();
            };
        </script>
    </body>
    </html>
    以前用的时候写了一个,拿来改了下,可以满足楼主的需求
      

  3.   

    下面的方法可以保留下拉菜单的任意项,或者选中任意项<body>
    <select  name="STy1" id="STy1" size="1">
    <option value="sn" selected="true">Family/Last Name</option>
    <option value="cn">Full Name</option>
    <option value="id">ID</option>
    </select>
    <select name="SLk1" id="SLk1" size="1">
    <option value="OBW">That Begins With</option>
    <option value="OOS">That Contains</option>
    <option value="OEM">That Equals</option>
    </select> <script type="text/javascript">
    (function(){

    //存储可变下拉框选项
    var opt = [],

    //存储可变下拉框对象
    sel = document.getElementById('SLk1');

    //将可变下拉框中的选项存入数组中
    (function(){
    var i = 0;
    while (opt.length != sel.length){ 
    opt[i] = sel.options[i]; 
    i++;

    })();

    //当选中项发生变化时,调用处理函数
    document.getElementById("STy1").onchange = function(){
    A(this, 2,1);
    };
       
    //obj下拉对象,n为选择"id"后的剩余项下标,selectedN为被选中项下标(下标从0开始)
    function A(obj,n,selectedN) {
            
    //选中项为Id是,将所有项删除,添加剩余项
    if (obj.value == 'id') {

    while(sel.length){
    sel.removeChild(sel.options[0]);
    }
    sel.options[0] = opt[n];

    }

    //加载所有项
    else if(sel.length == 1){ 
    sel.removeChild(sel.options[0]);

    (function(){

    var i = 0;
    while(sel.length != opt.length){
    sel.options[i] = opt[i];
    i++;
    }
    })();

    sel.options[selectedN].selected = "selected";
    }

    //选中项
    else{
    sel.options[selectedN].selected = "selected";
    }
    }
    })();
    </script>
    </body>
      

  4.   

    [Quote=引用 3 楼  的回复:]上个帖子里面两处兼容性没有处理:
    sel.options[0] = opt[n]; =》 sel.appendChild(opt[n]);
    sel.options[i] = opt[i]; =》 sel.appendChild(opt[i]);
      

  5.   

    function setfillGroupId(val)
    {
    $.ajax({
       type: "post",
        url: "/yoblhtjfx/queryArea.action",
        data: "parm="+val+"&jsoncallback=?",
        dataType: "json",
        success: function(json){
        var list = json.list;
        $("#inUnitAreaId").empty();
        $("#inUnitAreaId").prepend("<option value=''>请选择</option>");
    for(var i=0;i<list.length;i++)
    {
        $("#inUnitAreaId").append("<option value='"+list[i][0]+"'>"+list[i][1]+"</option>");
        }
        }
       
       });
    }给你一个我的,里面的乱码是没改字符集,不影响你,相信你看的懂,只不过我去后台查了一遍数据,你的就简单啦,不用查直接写上去就行了,你说的选中的那个直接加个selected属性就行了,记得引入jquery的js。