2012-02-12 13 views
0

私はカスタムjQueryバリデーターに苦労しています。私が最初に行ったことですが、かなり近いと思います。私はビルドしているオークションシステムの最小入札額に対して数字(入札)を検証しようとしていますが、問題は最低入札価格が常に15.50などの10進数ですが、入札は整数16になる可能性があります。私は10進数に対して全体を検証しているので、私の論理は落ちています。私は小数点に入力された数値を変換しようとしましたが、それはすべてを破るようです。以下は私の機能のコピーです。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; 
}); 

私はよくオフになる場合もあり、それは問題のthats何か他のものかもしれないが、任意の助けをいただければ幸いです。

答えて

0

Javascriptで浮動小数点数(小数点以下の桁数)と整数(整数)を比較すると、変換する必要はありません。

16 > 15.50 // -> true 

ただし、入力フィールドにval()を呼び出すと文字列が返されることがあります。あなたは比較しようとしている数字がでているどのような形式がわからない場合、(Javascriptがあなたのために変換するかもしれませんが)フロートへの変換を強制することは常に良い考えです:

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

これがなければなりません

parseFloat(16) // -> 16.0 

だからあなたの場合には、あなたが線に沿って何かを行うことができるかもしれない。でも、次が真であるとして、自然、まだ適切な結果を返すとフロートに整数に変換以来、あなたのケースでも最も安全な方法は、 of:

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

return currentbidvalue > bid; 

値/入札額の有無の確認は、おそらくコンバージョンを行う前に行う必要があります。

1

組み込みのリモート検証メカニズムを使用すると、これを簡単に行うことができます。リモート検証コントローラで入札確認が行われます。 Web上で利用できるいくつかの記事を見てみましょう:応答のための

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

+0

おかげで、私はそれが私が投稿コードのエラーを解決しないと答えとしてpolarblauの応答をマークし」しています。しかし、私はあなたの応答をマークアップしただけでなく、遠隔検証についても忘れていましたが、ここでも同様に有用であると私は同意します。 –

関連する問題