Проверка клиента с использованием 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>

Это будет использовать культуру браузера для проверки на стороне сервера. Что касается проверки на стороне клиента, то она уже использует культуру браузера. Так что это гарантирует, что оба совпадают.

Другие вопросы по тегам