在OnChange Select事件

时间:2017-06-28 08:24:44

标签: javascript jquery asp.net-mvc

我正在开发ASP.NET MVC应用程序。

这就是我在Razor View中添加select的方法:

@Html.DropDownListFor(
    m => m.VariableDataList[i].VariableDataForLevel[j].VariableDataId,
    new SelectList(Model.variableDataItems, "Id", "Name",
    Model.VariableDataList[i].VariableDataForLevel[j].VariableDataId),
    new {
        @onchange = "OnChangeVariableDataId(event, " + @i + ", "+ @j + ");",
        data_list_index = @i,
        data_level_index = @j
    })

我有这个选择:

<select name="VariableDataList[0].VariableDataForLevel[0].VariableDataId" class="valid" id="VariableDataList_0__VariableDataForLevel_0__VariableDataId" aria-invalid="false" onchange="OnChangeVariableDataId(event, 0, 0);" data-list-index="0" data-level-index="0">
[ ... ]
</select>

我想在data-list-index="0" data-level-index="0"函数中获取数据字段OnChangeVariableDataId的值:

function OnChangeVariableDataId(event, levelIndex, vDataIndex) {
    var aux = $(this).id;
    var list = $(this).data('list-index');
    var level = $(this).data('level-index');

[ ... ]
}

auxlistlevel变量为undefined

我如何获得这些价值?

使用Visual Studio调试器我发现在event.srcElement.dataset上有两个键levelIndexlistIndex及其对应的值。顺便说一下,我也尝试levelIndex listIndex $(this).data获得相同的undefined值。

即使我用OnChangeVariableDataId(even, 0, 0)更改OnChangeVariableDataId(),我也会得到相同的未定义值。

我确定问题出在$(this)

2 个答案:

答案 0 :(得分:2)

将您的项目传递给内联函数:

 onchange="OnChangeVariableDataId(this, 0, 0);"

然后你就能得到这样的数据:

function OnChangeVariableDataId(select, levelIndex, vDataIndex) {
  var aux = $(select)[0].id;
  var list = $(select).data('list-index');
  var level = $(select).data('level-index');
}

Here is a fiddle

答案 1 :(得分:0)

尝试$(this).attr('id')和$(this).attr('data-list-index')