Проверка клиента с использованием jQuery validate для полей валюты
У меня проблема с использованием jquery.validate в моем приложении asp.net mvc 3.
По крайней мере, в Испании мы используем ",", чтобы отделить число от его десятичной дроби. Хорошо, используя проверку на стороне сервера, если я добавлю что-то вроде:
12.55, когда сервер проверяет его, он говорит, что значение недействительно. Если я поставлю: 12,55, это работает.
Пока все хорошо, но если я использую jQuery validate, он говорит, что 12,55 является недействительным, а 12,55 является допустимым. Таким образом, клиент проходит проверку, а сервер - нет, или клиент не проходит, а сервер проходит.
Итак... я могу изменить локаль для такого рода проверки?
Спасибо.
PS: Как сервер знает, что я хочу проверить, используя ",", а не "."? Я не помню, указывал ли я это где-нибудь.
2 ответа
Вероятно, вы должны включить файлы локализации:
http://ajax.aspnetcdn.com/ajax/jQuery.Validate/1.7/localization/messages_es.js
http://ajax.aspnetcdn.com/ajax/jQuery.Validate/1.7/localization/methods_de.js
В Германии одни и те же правила для чисел, так что вы можете использовать methods_de.js
или просто включить
jQuery.extend(jQuery.validator.methods, {
number: function(value, element) {
return this.optional(element) ||
/^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(value);
}
});
Вот список файлов, размещенных в Microsoft CDN для версии 1.6. Версия 1.7 имеет те же файлы.
ОБНОВЛЕНО: см. Демо здесь.
Вы можете попробовать настроить ваше веб-приложение для использования языкового стандарта клиентского веб-браузера:
<system.web>
<globalization requestEncoding="utf-8"
responseEncoding="utf-8"
culture="auto"
uiCulture="auto" />
...
</system.web>
Это будет использовать культуру браузера для проверки на стороне сервера. Что касается проверки на стороне клиента, то она уже использует культуру браузера. Так что это гарантирует, что оба совпадают.