在文本框中定义OnChange时捕获Textbox的值

时间:2016-11-21 22:31:58

标签: c# jquery asp.net asp.net-mvc

我有一个动态生成的网格,其中包含x个文本框。在生成每个文本框时,我给它一个OnChange事件,它是一个set函数。

Html.TextBox(... new { @onchange = "ChangeItemQuantity(" + vm.ID + ", " + fk.id + ")" ...

因此,当它被渲染时,它看起来像这样:

<input ... type="text" onchange="ChangeItemQuantity(1939, 3)" />

然后,在脚本部分:

function ChangeItemQuantity(ItemId, ForeignKeyId) {
    ...
}

在ChangeItemQuantity()函数中,我如何捕获文本框的新值?我真的不想在文本框上使用id,因为它是包含许多文本框的网格的一部分。

我应该将其作为参数传递吗?如果是这样,呈现文本框的代码的语法是什么?

或者,有没有办法在javascript函数内捕获?

谢谢!

1 个答案:

答案 0 :(得分:1)

如果要在html元素中存储数据,为什么不使用数据属性?

像这样设置

@Html.TextBox(.... new { @class="someClass" data-vmId="vm.ID", data-fkId="fk.id" })

然后在该类上设置一个监听器

$('.someClass').change(function() { 
     var value = $(this).val(); 
     var vmid = $(this).data('vmid');
     var fkid = $(this).data('fkid');
}