允许用户在号码前输入$ sign?

时间:2013-03-30 06:36:21

标签: jquery asp.net asp.net-mvc asp.net-mvc-4 jquery-validate

我有以下模型属性

    [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?)

现在它显示“每年的薪水必须是一个数字。”我输入“$”后立即红色。

1 个答案:

答案 0 :(得分: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);