【问题标题】:Can I change the behavior of up/down arrows in Html Number input without changing the validation behavior? [duplicate]我可以在不更改验证行为的情况下更改 Html 数字输入中向上/向下箭头的行为吗? [复制]
【发布时间】:2017-10-12 19:52:13
【问题描述】:

我正在开发一个 MVC 应用程序,该应用程序用于记录工作成本代码的计费率,并且我正在使用 Html 帮助程序在这样的页面上构建输入列表:

@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 美分,但仍根据step="0.01"?

目前,它一次上涨一美分,我理解为什么要考虑 step="0.01" 值。我喜欢使用该步长值,因为它使客户端验证能够轻松依赖 Html5 验证。

我有没有一种简单的方法可以更改步进按钮的行为,同时保留此数字输入提供的简单验证?

【问题讨论】:

  • 我终于在 SO 上找到了一个答案,很好地解释了这个问题。上面提到的副本解释了为什么目前无法在不更改验证的情况下使用 html5 更改步骤行为。

标签: asp.net-mvc html razor


【解决方案1】:

发生这种情况是因为您将步长值明确指定为“0.01”。

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

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

但是使用这种方法,当用户单击向上/向下箭头时,您将丢失数字的小数部分(假设您的属性是小数/双精度类型)。

如果你想要小数部分,默认情况下没有直接增加.之前的值的方法。如果绝对需要,您可以提出一些疯狂丑陋的 javascript 解决方案,将原始值保存在隐藏变量中,然后在 change 事件中,使用原始值更新值(其中有小数部分) 并不断用新值更新这个临时变量值。但就像我提到的那样,它很丑陋,我会尽可能远离它。

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

【讨论】:

    猜你喜欢
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    相关资源
    最近更新 更多