我有以下模型属性
[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
?)
现在它显示“每年的薪水必须是一个数字。”我输入“$”后立即红色。
答案 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);