在 Razor 中,接受不带小数的整数

In Razor, accept whole number without decimal

我遇到了一个问题,文本框只允许整数值,而不是 dot/decimal razor 视图中的值。我环顾四周,但不幸的是我找不到答案。

JavaScript 接受带点 的数值存在验证,但我想要不带 dot/decimal。

cshtml:

@Html.TextBoxFor(Employee => Employee.AlternateNumber, new { @id = "txtAlternateNumber", @class = "form-control", @type = "number" })

如果js验证没问题,你可以这样做:

$('form').on('keydown', '.digitfield', function (e) { -1 !== $.inArray(e.keyCode, [46, 8, 9, 27, 13]) || (/65|67|86|88/.test(e.keyCode) && (e.ctrlKey === true || e.metaKey === true)) && (!0 === e.ctrlKey || !0 === e.metaKey) || 35 <= e.keyCode && 40 >= e.keyCode || (e.shiftKey || 48 > e.keyCode || 57 < e.keyCode) && (96 > e.keyCode || 105 < e.keyCode) && e.preventDefault() });

然后将 digitfield class 添加到文本框

这与剃须刀无关,而是 html5,但添加 stepmin 可能会有所帮助(取决于 browser-support 等):

@Html.TextBoxFor(Employee => Employee.AlternateNumber, new { @id = "txtAlternateNumber", @class = "form-control", @type = "number", @step="1", @min="0" })

一个可运行的例子:

<form>
<input type="number" step="1" min="0"> <input type="submit">
</form>

为了"realtime"检查,你必须使用javascript:

@Html.TextBoxFor(Employee => Employee.AlternateNumber, new { @id = "txtAlternateNumber", @class = "form-control", @type = "number", @step="1", @min="0", @onkeypress="return event.charCode >= 48 && event.charCode <= 57" })

一个可运行的例子:

<form>
<input type="number" step="1" min="0" onkeypress="return event.charCode >= 48 && event.charCode <= 57"> <input type="submit">
</form>