javascript下拉菜单和功能

时间:2016-02-25 07:40:33

标签: javascript jquery asp.net-mvc

我是web delpmnt的初学者。我需要为一个javascript函数(OpenPopupForSelectedFilters)传递一个下拉列表(html.dropdown),但我尝试的是没有工作.Funtion没有收到正确的id。让我知道正确的方法

我的代码:

<tr>
    @for (var i = 0; i < (@ViewData["AdditionalMaster"] as List<SelectListItem>).Count; i++)
    {
        var item = (@ViewData["AdditionalMaster"] as List<SelectListItem>)[i];
        <tr>   
            <td class="formLabel" style="text-align: right; padding-right: 50px">
                <label>@item.Text</label>
            </td>
            <td class="appliedFilter formField" style="text-align: left; width: 300px; padding-right: 50px">
                @Html.DropDownList("AdditionalMaster" + @item.Value, null, null, new { @Id ="Role"+(@item.Text).Replace(" ",""), @class = "dropdownStyle multiselect ", @multiple = "multiple", @Style = " width:275px;display:none" })
                <a href="javascript:OnClick=OpenPopupForSelectedFilters('Role'+@item.Text.ToString());"style="width: 20px; height: 13px" title="Show Selected Role">

JavaScript函数:

OpenPopupForSelectedFilters = function (val) { debugger;
    var id = '#' + val;
    var ddlText = $(id).multiselect("getChecked").map(function () {
        return this.value;
    }).get();

    if (ddlText.length == 0)
        document.getElementById('seldFitlers').innerText = "No record(s)";
    else
        document.getElementById('seldFitlers').innerText = $.map($(id + ' :selected'), function (e) { return $(e).text(); }).join('\n');

    $("#dv_forSeldFilters").dialog({ title: 'Selected record(s)' });
    $('#dv_forSeldFilters').dialog('open');
    $('#dv_forSeldFilters').scrollTop(0);
}

2 个答案:

答案 0 :(得分:0)

在以下行中:

<a href="javascript:OnClick=OpenPopupForSelectedFilters('Role'+@item.Text.ToString());"

你需要在引号中包含@ item.Text.ToString()并删除“OnClick =”,如下所示:

<a href="javascript:OpenPopupForSelectedFilters('Role'+'@item.Text.ToString()');"

您需要这样做的原因是ASP.NET MVC呈现引擎会将@ item.Text.ToString()评估为文本文字,而不是字符串。这意味着在您的版本中它最终会看起来像这样:

<a href="javascript:OpenPopupForSelectedFilters('Role'+MyRole);"

而不是你想要的是什么:

<a href="javascript:OpenPopupForSelectedFilters('Role'+'MyRole');"

删除“OnClick =”更多的原因是因为没有必要。

答案 1 :(得分:0)

如果下拉列表id"Role"+(@item.Text).Replace(" ","")

然后你可以将锚渲染为

<a href="javascript:OpenPopupForSelectedFilters('Role@(item.Text.Replace(" ",""))')"></a>

不需要+,而您正在删除上方下拉列表id中的空格。