我遇到一个问题,文本框只允许整个数值,而不是剃刀视图中的点/小数值。我环顾四周,但不幸的是我找不到答案。
使用点接受数值时存在JavaScript验证,但我想要没有点/小数。
CSHTML:
@Html.TextBoxFor(Employee => Employee.AlternateNumber, new { @id = "txtAlternateNumber", @class = "form-control", @type = "number" })
答案 0 :(得分:1)
如果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
类添加到文本框
答案 1 :(得分:1)
这与razor无关,而是与html5无关,但添加step
和min
可能有所帮助(取决于浏览器支持等):
@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>
&#13;
对于&#34;实时&#34;检查,你必须使用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>
&#13;