Проверка нокаута

У меня есть проект asp.net mvc3, где я делаю массовое редактирование на столе с привязкой к нокауту. Я хочу делать проверки, как требуемые и числовые проверки при сохранении данных. Есть ли более простой способ сделать нокаут проверки. PS: Я не использую формы.

Взгляните на нокаут-валидацию, которая тщательно настраивает и использует то, что описано в документации для нокаута . В: Live Пример 1: Принудительный ввод для числа

Вы можете видеть это вживую в Fiddle

UPDATE : скрипта была обновлена, чтобы использовать последние версии KO 2.0.3 и ko.validation 1.0.2, используя URL-адреса облачных CDN

Чтобы установить ko.validation:

ko.validation.rules.pattern.message = 'Invalid.'; ko.validation.configure({ registerExtenders: true, messagesOnModified: true, insertMessages: true, parseInputAttributes: true, messageTemplate: null }); 

Чтобы настроить правила проверки, используйте расширители. Например:

 var viewModel = { firstName: ko.observable().extend({ minLength: 2, maxLength: 10 }), lastName: ko.observable().extend({ required: true }), emailAddress: ko.observable().extend({ // custom message required: { message: 'Please supply your email address.' } }) }; 

Если вы не хотите использовать библиотеку KnockoutValidation, вы можете написать свой собственный. Вот пример обязательного поля.

Добавьте class javascript со всеми расширениями или расширениями KO и добавьте следующее:

 ko.extenders.required = function (target, overrideMessage) { //add some sub-observables to our observable target.hasError = ko.observable(); target.validationMessage = ko.observable(); //define a function to do validation function validate(newValue) { target.hasError(newValue ? false : true); target.validationMessage(newValue ? "" : overrideMessage || "This field is required"); } //initial validation validate(target()); //validate whenever the value changes target.subscribe(validate); //return the original observable return target; }; 

Затем в вашем представленииModel расширяет видимость:

 self.dateOfPayment: ko.observable().extend({ required: "" }), 

Для этого стиля проверки есть ряд примеров онлайн.

Проверка Knockout.js удобна, но она не является надежной. Вам всегда нужно создать репликацию валидации на стороне сервера. В вашем случае (как вы используете knockout.js) вы отправляете данные JSON на сервер и обратно асинхронно, поэтому вы можете заставить пользователя думать, что он видит проверку на стороне клиента, но на самом деле это будет асинхронная проверка на стороне сервера.

Взгляните на пример здесь. Upida.cloudapp.net:8080/org.upida.example.knockout/order/create?clientId=1 Это ссылка «Создать заказ». Попробуйте нажать «сохранить» и сыграть с продуктами. Этот пример выполняется с использованием библиотеки upida (есть версия Spring mvc и asp.net mvc этой библиотеки) из кода.

  • Использование DataAnnotations с платформой Entity Framework
  • Получение приглашения для входа с помощью встроенной проверки подлинности Windows
  • Как остановить Chrome от пожелтения полей ввода моего сайта?
  • Какой алгоритм дает предложения в проверке орфографии?
  • Проверка HTML5 перед отправкой ajax
  • Как установить атрибут maxlength на h: inputTextarea
  • Как проверить два поля пароля с помощью ajax?
  • Принудительное JSF обрабатывать, проверять и обновлять компоненты для чтения / отключения ввода в любом случае
  • Как выполнить проверку в JSF, как создать пользовательский валидатор в JSF
  • Разрешить пользователю вводить HTML в ASP.NET MVC - ValidateInput или AllowHtml
  • Пользовательская проверка MVC: сравнить две даты
  • Давайте будем гением компьютера.