C# 检查动态创建的文本框是否已被Javascript弄脏

C# 检查动态创建的文本框是否已被Javascript弄脏,c#,javascript,asp.net-mvc,asp.net-mvc-3,C#,Javascript,Asp.net Mvc,Asp.net Mvc 3,我正在开发MVC 3应用程序,我已经设法使用部分视图创建了一个动态创建的文本框,并对这些动态框进行了验证,但是,我想检查这些动态文本框是否已更改,并相应地将隐藏字段值更改为“dirty”,我使用以下代码检测文本框上的任何更改,它在任何已存在的文本框上都可以正常工作,但在动态创建的文本框上不起作用: <script type="text/javascript"> $(document).ready(function () { $("input[type='tex

我正在开发MVC 3应用程序,我已经设法使用部分视图创建了一个动态创建的文本框,并对这些动态框进行了验证,但是,我想检查这些动态文本框是否已更改,并相应地将隐藏字段值更改为“dirty”,我使用以下代码检测文本框上的任何更改,它在任何已存在的文本框上都可以正常工作,但在动态创建的文本框上不起作用:

<script type="text/javascript">
    $(document).ready(function () {
        $("input[type='text']").change(function () {
            $("#FormState").val('dirty');
        });
    });
</script>

$(文档).ready(函数(){
$(“输入[type='text']”)。更改(函数(){
$(“#FormState”).val('dirty');
});
});
是否仍可以使用javascript执行此操作?

使用:

   $("input[type='text']").live('change',function () {
        $("#FormState").val('dirty');
    });
使用:

   $("input[type='text']").live('change',function () {
        $("#FormState").val('dirty');
    });

您想做的事叫做事件委派。jQuery目前提供了三种进行事件委派的方法,分别是
live
delegate
on

另一个答案建议使用
live
,但出于充分的理由,it和
delegate
被弃用。他们有一些性能问题。您应该在上使用
进行事件委派。为了更好地使用它,您需要为它提供这些输入的合理父元素。尝试选择与所有输入最接近的父项

$('#parent-id').on('change', 'input[type="text"]', function () {
    $("#FormState").val('dirty');
});

您要执行的操作称为事件委派。jQuery目前提供了三种进行事件委派的方法,分别是
live
delegate
on

另一个答案建议使用
live
,但出于充分的理由,it和
delegate
被弃用。他们有一些性能问题。您应该在
上使用
进行事件委派。为了更好地使用它,您需要为它提供这些输入的合理父元素。尝试选择与所有输入最接近的父项

$('#parent-id').on('change', 'input[type="text"]', function () {
    $("#FormState").val('dirty');
});