ASP.NET mvc обнаруживает изменения на стороне клиента - PullRequest
7 голосов
/ 15 ноября 2011

В моем приложении я хочу, чтобы клиент не нажимал «Отправить», если он не изменил значения в определенной форме.Я могу сделать это на стороне сервера и добавить viewmodelerror к состоянию модели.Но есть ли способ сделать это также на стороне клиента с помощью JavaScript?Я искал его, но не смог его найти.

Ответы [ 3 ]

17 голосов
/ 15 ноября 2011

Вы можете установить переменную javascript, если форма редактируется. Простой способ сделать это - прослушать событие change в полях ввода:

var isChanged = false;
$('input,select,textarea').change(function() {
  isChanged = true;
});

А затем проверьте isChanged перед отправкой.

Этот подход не имеет дело с тем, что значения возвращаются к исходному значению.

Если вам нужно обратиться к этому сценарию, вам нужно будет сохранить состояние формы в объекте javascript и сравнить его с этим.

Вы можете добавить это, чтобы пользователь не покинул страницу, если форма изменилась:

$(window).bind('beforeunload', function() { 
  if (isChanged) {
    return 'You have changed the form, are you sure?';
  } else {
    return undefined;
  }
});
0 голосов
/ 15 ноября 2011

Что должен изменить клиент?

Если, например. это просто значение текстового поля, в котором вы можете сохранить исходное значение в событии jquery готовности документа, и при нажатии кнопки отправки запустите функцию javascript, которая проверяет, изменилось ли значение.

Если у вас есть более сложные поля ввода, вы все равно можете использовать этот механизм для сохранения оригинала и проверки отправки через javascript.

0 голосов
/ 15 ноября 2011

Не уверен, что ты спрашиваешь?Вы говорите о проверке на стороне клиента?в этом случае вы можете использовать MVC Validation или библиотеку javascript, например jquery, и использовать плагин проверки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...