删除或隐藏下拉列表中的一些值,该列表由使用JavaScript的存储过程填充

Delete or hide some values in drop down list which is populating by stored procedure using JavaScript?

本文关键字:列表 填充 存储过程 JavaScript 下拉列表 隐藏 删除      更新时间:2023-09-26

我正在研究经典ASP和JavaScript。

我有两个下拉列表:Dropdownlist1Dropdownlist2。在第一个下拉列表中显示公司列表,在第二个下拉列表显示部门。

当用户从第一个下拉列表中选择公司A时,它应该显示所有部门。

当用户从第一个下拉列表中选择公司B时,它应该在第二个下拉列表中将几个部门隐藏起来。

下拉列表由存储过程填充。

我该怎么做?

有两种方法:

您可以使用AJAX发出请求,通过传递第一个下拉列表的选择来获得第二个下拉列表中的选项(这是大多数人会做的)。在你的JS(未测试!)中,这看起来像这样

(编辑:忘了提到下面的例子使用jQuery)

$('select#company').on('change', function () {
    $.ajax('/some-asp-file.asp', {
        type: 'POST',
        data: {
            'Company': $('select#company').val()
        },
        success: $.proxy(function(data){
            $('select#department').html(data);
        }, this)
    });
});

/some-asp-file.asp中类似的东西(也没有测试!)

<%
dim Company
dim Department, Departments
Company = trim(request.form("Company"))
if Company <> "" then
    Departments = ' // -> Result Array from your SP here where you pass in "Company"
    for each Department in Departments
%>
<option value="<%=Department%>"><%=Department%></option>
<%
    next
else
%>
<option value="-1">-</option>
<%
end if
%>

或者(决策也取决于您拥有的数据量),您可以首先获取所有数据,并将其存储在JS对象中,然后在客户端替换它。对于ASP等中所有的双引号转义的代码来说,这可能更令人沮丧,但如果你坚持的话,我可以给你写一个快速的例子。