【问题标题】:the pattern doesn't work in input Number?该模式在输入数字中不起作用?
【发布时间】:2019-03-12 22:51:01
【问题描述】:

为什么输入数字中的模式不起作用,我写1.11,1时出现服务器错误,因为在mvc控制器方法中我应该采用int类型。

<input type="number" name="Quantity" min="1" title="Пожалуйста, введите количество" placeholder="кол-во" pattern="\d+" required />

所需的工作权限。

如何使模式只有整数值?

【问题讨论】:

  • 如果您尝试将 1.1 存储到服务器上的 int 中,它将解释错误。 1.1 不是整数。
  • 是的我现在但是如何使验证模式只有整数!
  • step="1" 也会有所帮助

标签: regex html


【解决方案1】:

将您的输入包装在 form 中将使验证生效 - 它不会限制人们可以输入的内容,但如果输入的输入不是整数,它将停止提交表单。

const calc = () => alert("It worked!")
<form onSubmit="calc()">
  <input
    type="number"
    name="Quantity"
    min="1"
    title="Only ints please"
    placeholder="Type here..."
    pattern="\d+"
    required
  />
  
  <input type="submit">
</form>

如果您想首先限制输入的内容,则需要更复杂的 JavaScript - 请参阅 this answer 了解如何做到这一点的示例。

【讨论】:

  • 它没有帮助,因为它是在一个表格中,但 Lawrence Cherone 是对的 step = "1"help me
  • 你需要小心step="1",因为它不是非常向后兼容的——尽管如果这在你的站点中并不重要,那么它会工作得很好。请注意step="1" 也会让e 之类的东西通过,因为这算作一个数字。
【解决方案2】:

试试\d+([.,]\d+)?

“数字,可能后跟., 以及更多数字”。

【讨论】:

  • 我只需要整数类型,没有任何浮点部分
【解决方案3】:

您必须使用 javascript,因为输入包含“1.1”或“1”而不是 1.1 或 1。或者您可以在控制器中将字符串转换为 int。

在JS中可以使用parseInt(number, base),比如

let i = "42.5243";

let j = parseInt(i);
console.log(j); // 42

在评论中使用 sn-p 编辑:

&lt;input type="number" name="Quantity" title="Пожалуйста, введите количество" placeholder="кол-во" pattern="\d+" required oninput="validity.valid ? this.save = value : value = this.save;" /&gt;

它不允许用户编码除整数以外的任何东西。

【讨论】:

  • 这是一种简单的方法,但是如何通过验证来制作,因为在我的项目中,人们下订单并选择产品的数量
  • 好吧,合并您的输入和我之前回答的类似输入,我想出了 。它不允许用户输入除整数以外的任何内容。源代码:stackoverflow.com/questions/55119386/…
猜你喜欢
  • 1970-01-01
  • 2017-02-15
  • 1970-01-01
  • 2017-11-22
  • 1970-01-01
  • 2017-04-28
  • 1970-01-01
  • 2018-05-19
  • 2013-07-30
相关资源
最近更新 更多