2

私はMVC3にjQueryの控えめな検証バージョン2.0を使用しています。最新のjquery.validate(v 1.9)もあります。このコードのポップアップフォームがあります:

$(document).ready(function () {
    $('#createForm').submit(function () {
        $.validator.unobtrusive.parse($('#createForm'));  
(more)

(3行目は、javascriptによって追加されたフォームフィールドが検証されるために必要です。)

ビューモデルのdecimalプロパティにバインドされている入力タグに入力された$1,000.00などの値が無効であり、1,000.00有効であることを除いて、検証は正常に機能します。明らかに、「$」はバリデーターの目には値を文字列としてキャストしています。

私はこれを何時間も調査しましたが、他に同様の質問が1つだけ投稿されていることがわかりました(SOにもあり、回答はありませんでした)。モーダルダイアログで通貨の値を処理するすべてのMVC3開発者がこれに遭遇したとは信じられません。そうでなければ、今では確かにある程度の解決策がありますよね?

DecimalBinderを作成することで、サーバー側の問題を解決しました。ここで、クライアント側の検証のためのソリューションが必要です。jquery.validate.unobtrusiveのAPIをよく調べていますが、フックが見つからないようです。標準のjavascriptライブラリを変更したくありません。

4

1 に答える 1

0

検証の前に最初に $ 文字を取り除くように見えるカスタム検証メソッドはどうですか?

  var currentVal = (control's actual value);
  currentVal = currentVal.replace('$','');

次に、検証を続行します。明らかな欠点は、カスタム バリデータが必要なことです。

于 2012-05-11T14:22:56.843 に答える