0

我有以下模型属性

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

rasor 标记是

@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)当您提交表单时,您应该解析输入中的值并删除 $ 字符。

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