我需要检测文本框中的值是否发生了更改。如果文本框内容被更改/修改,我需要显示一个textbox,并强制用户输入有关更改的一些注释。
这是我的EditorTemplate页面,位于共享/编辑器模板/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" })
下面是我调用上面的EditorTemplate的MyPage.cshtml
@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是动态生成的。
<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?
发布于 2012-05-15 01:28:09
假设我有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();
}
});
});
https://stackoverflow.com/questions/10592964
复制相似问题