当前位置: 首页 > 知识库问答 >
问题:

如何更改最小值和最大值的HTML5表单验证默认错误消息?

龚盛
2023-03-14

我找到了更改无效值的错误消息的答案。如何更改或删除HTML5表单验证默认错误消息?。

我需要为小于最小值和大于最大值的值显示不同的消息。

<input type="number" name="test" step="any" min="0.01" max="10.0">

如果用户输入-1,它应该说“请输入正值”。

如果用户输入20,则应显示“值不能超过10”。

共有2个答案

秦渝
2023-03-14

通过HTML5表单验证(从您的链接),您可以使用input元素上的invalid事件侦听器来使用自定义消息。

var myInput = document.getElementById("myInput");
myInput.addEventListener("invalid", validate);
myInput.addEventListener("keyup", validate);

function validate() {
  var val = parseFloat(this.value);
  var min = parseFloat(this.min);
  var max = parseFloat(this.max);
  
  if (val < min) {
    this.setCustomValidity('Please enter a positive number');
  } else if (val > max) {
    this.setCustomValidity('Value cannot be more than ' + max);
  } else {
    this.setCustomValidity("");
  }
}
<form>
  <input id="myInput" type="number" name="test" step="any" min="0.01" max="10.0">
  <button type="submit">Submit</button>
</form>
仲孙文乐
2023-03-14

可能有一些奇特的应用编程接口驱动的方法可以做到这一点,但是如果当输入不匹配模式时显示标题,您可以在更改时修改标题

要支持小数,您需要一些更高级的正则表达式

*我包含了表单标记,这样验证就可以在代码段中工作了

document.querySelector('input').addEventListener('change', (e) => {
  if (e.target.value > 10) {
    e.target.setAttribute('title', "Value cannot be more than 10");
  } else if (e.target.value < 0) {
    e.target.setAttribute('title', "Please enter a positive value");
  } else {
    e.target.setAttribute('title', "Please enter a number");
  }
})
<form><input type="text" required="" pattern="10|[0-9]" value="" title="This is an error message" /></form>
 类似资料:
  • 问题内容: 例如我有一个。该字段是必填字段,仅数字是必需的,并且值的长度必须为10。当我尝试提交长度为5的值的表单时,会出现默认错误消息: 如何更改HTML 5表单验证错误的默认消息? 如果可以做到第一点,那么有没有办法创建一些属性文件并在该文件中设置自定义错误消息? 问题答案: 我在Ankur答案上发现了一个错误,并通过以下更正对其进行了修复: 设置无效的输入数据,然后更正输入并发送表格时看到的

  • 例如,我有一个。该字段是必填字段,只需要数字,值的长度必须为10。当我尝试提交长度为5的表单时,会出现默认错误消息: 如何更改超文本标记语言5表单验证错误默认消息? 如果第一点可以做到,那么是否有一种方法来创建一些属性文件并在该文件中设置自定义错误消息?

  • 问题内容: 我有一个字段的最小值取决于另一字段中给定的输入的要求。 此输入用于验证另一个字段 但这不能按预期工作..如果我以后更改“ minval”,则输入不会得到重新验证。 我已经尝试根据一些解决方案中的建议从JS设置min的初始值,但这也无济于事… 链接器 问题答案: 使用ng-min / ng-max指令

  • 嗨,我有一个带有chartjs的图表,它插入最小值,最大值,平均值之间,带有条形图表。到目前为止,一切都很好,输入了值,我想做的是图形的条形从y轴上的最小值开始定位到y轴上的最大值,我不希望柱线从值0开始。

  • 这就是我得到的错误 我使用的是MySQL5.7版

  • 问题内容: 我有一个表,其中的列类型为默认值,每次更新都更新为。 我想删除此列上的“更新时”功能。如何编写alter语句? 我尝试了以下方法: 但这没用。 问题答案: 皮特几乎是正确的,但对“更改”使用了错误的语法: 请注意,您必须重复列名。另外,请确保您使用反引号而不是单引号来转义列名时间,以防止将其解释为mysql列时间类型。 通过指定CURRENT_TIMESTAMP的默认值,MySQL将不