2017-10-12 48 views
0

我的工作是用来记录作业成本代码计费费率MVC应用程序中,我使用HTML辅助以这样的页面上生成的输入列表:我可以在不更改验证行为的情况下更改Html Number输入中向上/向下箭头的行为吗?

@Html.EditorFor(m => m.LineItemRates[i].REG, new { htmlAttributes = new { 
    @class = "reg form-control input-sm", @type = "number", step = "0.01", 
    placeholder = "Regular Time..", @required = "required" } }) 

这些投入工作的伟大,但我想知道是否有我可以使用的选项,这样当用户点击向上/向下箭头时,该值将增加1美元而不是1美分,但仍按照步骤=“0.01”进行验证?

money input arrows

目前,它的时间,我明白了为什么考虑步骤=“0.01”价值上升由一美分。我喜欢使用该步骤值,因为它使得客户端验证可以轻松地依赖于Html5验证。

有没有简单的方法让我改变步骤按钮的行为,同时保留这个数字输入提供的简单验证?

+0

我终于在SO上找到了答案,对这个问题给出了很好的解释。上面提到的副本解释了为什么html5当前不可能在不更改验证的情况下更改步骤行为。 – MUlferts

回答

0

这是因为您明确指定步长值为“0.01”。

如果删除它,它会增加值,而不是小数。

@Html.EditorFor(m => m.LineItemRates[i].REG, new { htmlAttributes = new { 
    @class = "reg form-control input-sm", @type = "number", 
    placeholder = "Regular Time..", @required = "required" } }) 

但是,使用这种方法,你将失去数的小数部分(假设你的属性是十进制/ double类型)从输入当用户点击向上/向下箭头。

如果您需要小数部分,则缺省情况下没有直接的方法来增加.之前的值。如果绝对需要,您可以想出一些疯狂丑陋的JavaScript解决方案,您可以将原始值保留在隐藏变量中,并在change事件中使用原始值(其中h为小数部分)更新值,以及继续使用新值更新此临时变量值。但就像我提到的那样很丑,我会尽可能远离它。

还记得客户端验证只是一个方便的帮手。您必须始终验证服务器上的输入。

相关问题