在 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,但添加 step
和 min
可能会有所帮助(取决于 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>
我遇到了一个问题,文本框只允许整数值,而不是 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,但添加 step
和 min
可能会有所帮助(取决于 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>