javascript - Jquery 检测 EditorTemplate 上的 TextBox 内容更改

标签 javascript asp.net-mvc-3 jquery-ui c#-4.0

我需要检测文本框中的值是否发生更改。 如果文本框内容被更改/修改,我需要显示一个文本框并强制用户输入一些有关更改的注释。

这是我的 EditorTemplate 页面,位于 Shared/EditorTemplates/Addresses.cshtml

@Html.EditorFor(model => model.Address)
@Html.ValidationMessageFor(model => model.model.Address))
@Html.EditorFor(model => model.Comments,new{style="Visible:false" })
@Html.ValidationMessageFor(model => model.Comments ,new{style="Visible:false" })

这是 MyPage.cshtml,我在其中调用上面的 EditorTemplate

 @if (!UtilityHelper.IsNullOrEmpty(Model.AddressesRecords))
        {

             @Html.EditorFor(model => model.AddressesRecords)

         }

     <input type="submit" name="ButtonCommand" value="Save" />

页面加载时,会出现多个地址文本框。如果用户对任何地址 TextBox 进行任何修改,CommentsTextBox 将立即在该特定地址 TextBox 中可见,并启用验证。

因此,当我单击“保存”按钮时,我需要确保用户在 CommentsTextBox 中输入了一些评论。 如果用户点击保存按钮而没有更改地址文本框,则记录将被保存。

在运行时,我可以看到编辑器ID是动态生成的,例如AddressesRecords_0_Address,AddressesRecords_1_Address......

我尝试使用一些 Jquery,但这似乎永远不起作用,因为实际的 AddressTextBox id 是动态生成的。

<script type="text/javascript">


    $(document).ready(function(){

       var $el = $('#AddressesRecords_0_Address');
       $el.data('oldVal',  $el.val() );


       $el.change(function(){

            $("#AddressesRecords_0_Comments").show();
       })

    });
</script>

这里如何将我的 Jquery 更改函数附加到每个地址文本框?

最佳答案

假设我有 3 个不同的文本框,分别名为 TextBox1、TextBox2 和 TextBox3,此代码将检查这些字段中的任何更改并显示注释字段

$('#TextBox1, #TextBox2, #TextBox3').each(function () {
    $(this).data('oldVal', $(this).val());
    $(this).bind("propertychange keyup input paste", function (event) {
        if ($(this).data('oldVal') != $(this).val()) {
            $(this).data('oldVal', $(this).val());

            $('#Comments').show();
        }
    });
});

您还可以为每个字段分配一个类,然后这样做

$('.MyClass').each(function () {
    $(this).data('oldVal', $(this).val());
    $(this).bind("propertychange keyup input paste", function (event) {
        if ($(this).data('oldVal') != $(this).val()) {
            $(this).data('oldVal', $(this).val());

            $('#Comments').show();
        }
    });
});

关于javascript - Jquery 检测 EditorTemplate 上的 TextBox 内容更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10592964/

相关文章:

javascript - 正则表达式匹配mongodb中的整个单词

javascript - 从部分填充 Razor 部分

javascript - 如何在错误时摇动登录表单

javascript - DC.js 条形图条形大小调整

javascript - 使用 Multer 上传文件,不知道他们的字段名

javascript - qooxdoo 中的离线商店是否与所有浏览器和本地文件系统兼容?

fluent-nhibernate - ASP.NET MVC 3 - WebDev 服务器使用 Fluent NHibernate 泄漏内存?

javascript - 使用 javascript 在新窗口中打开重定向操作

JQuery attr 不改变对话框标题

javascript - 使用媒体查询来操纵 jquery Accordion