ASP.NET mvc检测客户端更改

Pat*_*ick 7 javascript c# forms asp.net-mvc-3

在我的应用程序中,我希望客户在不更改特定形式的值时不按提交.我可以在服务器端执行此操作并将viewmodelerror添加到modelstate.但有没有办法做到这一点也客户端与JavaScript?我搜索了它,但找不到它.

Chr*_*ger 17

如果编辑表单,您可以设置javascript变量.这样做的一种简单方法是在输入字段上侦听change事件:

var isChanged = false;
$('input,select,textarea').change(function() {
  isChanged = true;
});
Run Code Online (Sandbox Code Playgroud)

然后isChanged在提交之前检查.

但是,此方法不会将值更改回原始值.

如果需要解决该场景,则需要将表单状态保存在javascript对象中并与之进行比较.

您可以添加此项以避免用户在表单发生更改时离开页面:

$(window).bind('beforeunload', function() { 
  if (isChanged) {
    return 'You have changed the form, are you sure?';
  } else {
    return undefined;
  }
});
Run Code Online (Sandbox Code Playgroud)