如何根据另一个下拉列表刷新我的下拉列表

时间:2015-11-23 07:07:57

标签: javascript jquery json

我有两个下拉菜单,如客户和公司。我的客户下载了客户列表。基于客户的选择,我必须填充公司。我从后端获取公司详细信息作为JSON字符串对象。

第一次选择客户时,它会显示与客户相关的公司信息。

我的问题是 在seconed时间,我选择另一个客户(在变更时),但它显示旧的客户公司详细信息并显示选定的客户公司详细信息。我只希望我公司的现有客户数据下拉。

这是我的代码。 在选择客户时我得到结果(公司名单)。

<script language="JavaScript">
function getcompanyNames(result){
    var data = JSON.parse(result);
    $.each(data, function(key, value)
    {
        $("#companydetails").append("<option>" + value.environments_name  + "</option>");
    });

} 

我的下拉有这些选项。

hcl - dev
ibm -  test
infosys -pro
ibm-pro
ec- -test

我的要求是,如果我的选项包含专业版,则为该选项优先考虑。并且dev是第二优先级,测试是第3优先级。

如何为我的选项设置优先级..

3 个答案:

答案 0 :(得分:0)

在填充新数据之前,请务必清除下拉列表。

empty() | jquery referrence

$( "#companydetails" ).empty();

答案 1 :(得分:0)

试试这个:

function getcompanyNames(result){
    var data = JSON.parse(result);
    $("#companydetails").html('');
    $.each(data, function(key, value)
    {
        $("#companydetails").append("<option>" + value.environments_name  + "</option>");
    });
    $("#companydetails").selectmenu("refresh", true);
} 

答案 2 :(得分:0)

$( “#”)附加( '...');将追加新公司列表以及旧数据。在选择其他客户时,您应该清除旧列表,然后添加新列表。

使用以下代码。

<script language="JavaScript">
function getcompanyNames(result){
var data = JSON.parse(result);
$("#companydetails").html('');
$.each(data, function(key, value)
{
    $("#companydetails").append("<option>" + value.environments_name  + "</option>");
});
} 

如果您正在根据选项值文本查找排序,则可以使用如下所示的内容。因为您的排序是基于文本而不是按字母顺序排列所以这是您的替代方案。

var data = JSON.parse(result);
var sortedData = $.merge([], $.grep(data, function (item) { return item.environments_name.toLowerCase().indexOf("pro") > -1; }));
sortedData = $.merge(sortedData, $.grep(data, function (item) { return item.environments_name.toLowerCase().indexOf("dev") > -1; }));
sortedData = $.merge(sortedData, $.grep(data, function (item) { return item.environments_name.toLowerCase().indexOf("test") > -1; }));
$("#companydetails").html('');
$.each(sortedData , function(key, value)
{
    $("#companydetails").append("<option>" + value.environments_name  + "</option>");
});