0

次のモデルプロパティがありました

    [DisplayName("Salary per year")]
    public decimal Salary { get; set; }

そしてレーザーマークアップは

@Html.EditorFor(model => model.Salary)
@Html.ValidationMessageFor(model => model.Salary)

生成された html コード:

<input class="text-box single-line input-validation-error" data-val="true" data-val-number="The field Salary per year must be a number." data-val-required="The Salary per year field is required." id="Salary" name="Salary" type="text" value="">
<span class="field-validation-error" data-valmsg-for="Salary" data-valmsg-replace="true"><span for="Salary" class="" style="">The field Salary per year must be a number.</span></span>

クライアントの検証では、ユーザーは数字のみを入力できます。ただし、ユーザーは数字の前に $ を入力できるようにしたいと考えています (後で、数字を区切るために "," も入力できるようにしたいのだろうか)。有効にする方法は?decimal(そして、コントローラーで文字列を解析しますか?)

現在、「年間給与フィールドは数値でなければなりません」と表示されています。「$」を入力するとすぐに赤く表示されます。

4

1 に答える 1

0

次のことができます。

1)キープレスの関数を作成し、キープレスキーコードが数字またはコンマであることを確認します:

a) これは使用するライブラリかもしれません: http://jquerypriceformat.com/

$('#example1').priceFormat();

b) このためのカスタム コードを作成します。

$('#example1').on("keypress", function (e){
if( event.keyCode == ',' ||  event.keyCode == '$' || (event.keyCode => '0' &&  event.keyCode <= '9'))          {
    // allow char
} else {
e.preventDefault();
}

});

c) この例が最適です。

http://help.dottoro.com/ljlwfxum.php

<head>
    <script type="text/javascript">
        function FilterInput (event) {
            var chCode = ('charCode' in event) ? event.charCode : event.keyCode;

                // returns false if a numeric character has been entered
            return (chCode < 48 /* '0' */ || chCode > 57 /* '9' */);
        }
    </script>
</head>
<body>
    The following text field does not accept numeric input:
    <input type="text" onkeypress="return FilterInput (event)" />
</body>

2) フォームを送信するときは、入力から値を解析し、$ char を削除する必要があります。

var val = $('#example1').val();
val = val.slice(2);
于 2013-03-30T06:40:02.123 に答える