2012-02-12 3 views
0

Я борюсь с пользовательским валидатором jQuery, его мой первый переход на один, и я думаю, что я довольно близко. Я пытаюсь проверить число (ставку) на минимальную ставку для аукционной системы, которую я создаю, проблема в минимальной ставке - это десятичное число, например 15.50, но ставка может быть целым числом 16. Я думаю моя логика падает, поскольку я проверяю целое на десятичное число, которое я пытался преобразовать число, введенное в десятичное число, но это, кажется, сломает все. Ниже приведена копия моей функции.MVC 3 jQuery Пользовательский валидатор

$.validator.addMethod("bidgreaterthan", function (value, element, params) { 
var parts = element.name.split("."); 
var bid = value.toFixed(2); 
var prefix = ""; 
if (parts.length > 1) 
    prefix = parts[0] + "."; 
var currentbidvalue = $('input[name="' + prefix + params.propertytested + '"]').val(); 
if (!bid || !currentbidvalue) 
    return true; 
if (bid < (currentbidvalue)) 
    return false; 
}); 

я мог бы быть в достатке, и это может быть что-то еще вот эту проблему, но любая помощь будет оценена.

ответ

0

Сравнение поплавка (число с десятичными знаками) и целое число (целое число) в Javascript должно работать без какого-либо преобразования.

16 > 15.50 // -> true 

Однако, вызывая val() на поле ввода может дать строку. Если вы не уверены, что формат номера вы собираетесь сравнивать в, это всегда хорошая идея, чтобы заставить преобразования в поплавок (хотя Javascript может конвертировать для вас):

parseFloat("16") > parseFloat("15.50") // -> true 

Это должно быть самый безопасный метод также в вашем случае, поскольку даже преобразования целого числа в поплавка с естественно еще возвращать правильный результат, как справедливо следующее:

parseFloat(16) // -> 16.0 

так что в вашем случае вы можете быть в состоянии сделать что-то вдоль линий от:

var bid   = parseFloat(value); 
currentbidvalue = parseFloat(currentbidvalue); 

return currentbidvalue > bid; 

Проверка наличия значения/цены должна, вероятно, произойти, прежде чем делать какие-либо преобразования.

1

Что случилось с встроенным механизмом проверки валидации, который может сделать это намного проще? Проверка заявки будет происходить в удаленном контроллере проверки. Взгляните на некоторые статьи доступны на веб-сайте:

http://deanhume.com/Home/BlogPost/mvc-3-and-remote-validation/51

+0

Спасибо за ответ, я пометили ответ polarblau в качестве ответа, как это делает решить ошибку в коде я отправил. Но я отметил ваш ответ так же хорошо, как я забыл о дистанционной проверке, и я согласен, что это будет так же полезно здесь. –

Смежные вопросы