html - 在 <input type ="number"> 中禁用文本输入

标签 html validation user-input

我正在制作一个简单的网络应用程序。在它的一部分,我包含了一个 type="number"

的输入框
<input type="number" min="0">

无论如何,当我在最新的 Google Chrome 浏览器中运行代码时,我也可以输入文本:

I entered text in an input type of number

我不希望用户能够这样做。我应该如何纠正这个问题?

最佳答案

您可以使用 JavaScript(例如 jQuery)只允许特定字符:

// Catch all events related to changes
$('#textbox').on('change keyup', function() {
  // Remove invalid characters
  var sanitized = $(this).val().replace(/[^0-9]/g, '');
  // Update value
  $(this).val(sanitized);
});

Here是一把 fiddle 。

同样支持 float :

// Catch all events related to changes
$('#textbox').on('change keyup', function() {
  // Remove invalid characters
  var sanitized = $(this).val().replace(/[^0-9.]/g, '');
  // Remove the first point if there is more than one
  sanitized = sanitized.replace(/\.(?=.*\.)/, '');
  // Update value
  $(this).val(sanitized);
});

here是另一个 fiddle 。

更新:虽然您可能不需要这个,但这里有一个允许前导减号的解决方案。

// Catch all events related to changes
$('#textbox').on('change keyup', function() {
  // Remove invalid characters
  var sanitized = $(this).val().replace(/[^-0-9]/g, '');
  // Remove non-leading minus signs
  sanitized = sanitized.replace(/(.)-+/g, '$1');
  // Update value
  $(this).val(sanitized);
});

3rd fiddle

现在是只允许有效小数(包括 float 和负数)的最终解决方案:

// Catch all events related to changes
$('#textbox').on('change keyup', function() {
  // Remove invalid characters
  var sanitized = $(this).val().replace(/[^-.0-9]/g, '');
  // Remove non-leading minus signs
  sanitized = sanitized.replace(/(.)-+/g, '$1');
  // Remove the first point if there is more than one
  sanitized = sanitized.replace(/\.(?=.*\.)/g, '');
  // Update value
  $(this).val(sanitized);
});

Final fiddle

关于html - 在 &lt;input type ="number"> 中禁用文本输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21215049/

相关文章:

javascript - 在所有页面中包含 Menu.html

css - 列表(导航)元素不会延伸到向右浮动的 div

java - 如何在 Java 上验证构造函数参数?

javascript - ASP.NET 4.5 自定义验证属性。 IsValid() 调用得太晚了

twitter-bootstrap - 对具有相同数组名称(输入属性)的动态添加字段进行 Bootstrap 验证,例如名称 ="email[]"

user-input - 捕获间隔的用户输入

java - do while 循环和用户输入问题

正则表达式:如何在 Perl 中删除字符串之间的多余空格

javascript - 如何以通用样式排列文本框

javascript - Lightslider 和 mootols 不能一起工作,