首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用于检测EditorTemplate上的TextBox内容更改的Jquery

用于检测EditorTemplate上的TextBox内容更改的Jquery
EN

Stack Overflow用户
提问于 2012-05-15 09:09:14
回答 1查看 1.3K关注 0票数 1

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

这是我的EditorTemplate页面,位于共享/编辑器模板/Addresses.cshtml

代码语言:javascript
代码运行次数:0
运行
复制
@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" })

下面是我调用上面的EditorTemplate的MyPage.cshtml

代码语言:javascript
代码运行次数:0
运行
复制
 @if (!UtilityHelper.IsNullOrEmpty(Model.AddressesRecords))
        {

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

         }

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

加载页面时,将有多个地址文本框。如果用户对任何地址TextBox进行任何修改,将立即使CommentsTextBox相对于该特定地址TextBox可见,并且启用验证。

因此,当我单击保存按钮时,我需要确保用户在CommentsTextBox中输入了一些注释。如果用户在不更改地址文本框的情况下单击“保存”按钮,则只会保存记录。

在运行时,我可以看到编辑器id是动态生成的,如AddressesRecords__Address、AddressesRecords_1_Address……

我尝试过一些AddressTextBox查询,但这似乎从来都不起作用,因为实际的Jquery ids是动态生成的。

代码语言:javascript
代码运行次数:0
运行
复制
<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 change函数附加到我的每个addressTextBox?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-15 09:28:09

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

代码语言:javascript
代码运行次数:0
运行
复制
$('#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();
        }
    });
});

您还可以为每个字段分配一个类,如下所示

代码语言:javascript
代码运行次数:0
运行
复制
$('.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();
        }
    });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10592964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档