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

html5 oninvalid在修复输入字段后不工作

胡昊
2023-03-14

我的表格中有以下输入代码:

<input maxlength="255" id="information_name" name="information[name]" oninvalid="check(this)" placeholder="Nombre Completo" required="required" size="30" style="width:528px;height:25px;" tabindex="3" type="text">

我用下面的代码更改了一个无效的消息:

<script>
 function check(input) {
   if (input.value == "") {
     input.setCustomValidity('Debe completar este campo.');
   } else  {
     input.setCustomValidity('Debe corregir este campo.');
   }

 }
</script>

问题是,如果我单击提交,字段为空,字段显示错误,因此我需要填充字段,但填充字段后,即使填充不为空,我仍会收到警告。

我做错了什么???

共有3个答案

艾成益
2023-03-14

如果将CustomValidity设置为非空字符串的任何值,则这将导致输入处于无效状态。因此,您的条件是检查一个值,然后将字段设置为无效。只有当字段中的值实际无效时,才setCustomValidity,否则将其设置为空字符串:

<script>
 function check(input) {
   if (input.value == "") {
     input.setCustomValidity('Debe completar este campo.');
   } else  {
     input.setCustomValidity('');
   }
 }
</script>

曾实
2023-03-14

您可以使用setCustomValidity设置自定义有效性消息,但是任何非空字符串都会导致该字段的行为如同其具有无效值一样。您需要setCustomValidity(“”)来清除字段的无效状态。

如果您的有效性是简单的,并通过字段属性进行控制,您可以使用object.will验证进行测试并设置自定义有效性消息:

="this.set自定义有效性(this.will验证?":'你的自定义消息')"

施永宁
2023-03-14

如果使用setCustomValidity()设置值,则该字段无效。即设置一个非零长度字符串使浏览器考虑字段无效。为了使新输入生效,您必须清除自定义有效性。您可以简单地使用以下各项:

<input required maxlength="255" id="information_name" minlength=1 name="information[name]" oninvalid="setCustomValidity('Should not be left empty.')" 
   oninput="setCustomValidity('')" />

没有必要为此使用Javascript。

 类似资料:
  • 我有一个网站,我想运行购物车功能的完整过程。一切顺利,直到我点击付款方式,选择借记卡和。在将数据放入字段时,它不接受。如何将数据放入字段中。以下是测试网站的链接:https://vapesuite.allomate.solutions/#/.下面是将数据输入字段的代码。

  • 我正在尝试用Angular构建一个简单的计算器,如果我想的话,我可以覆盖总数。我有这部分的工作,但当我回去输入一个数字在一个或两个领域的总数没有在该领域的更新。 这是我的jsfiddlehttp://jsfiddle.net/YUza7/2/ 形式 javascript

  • 我已经做了这个程序,我被卡住了。当我运行它时,我的输入没有使用空格,它工作得很好,例如,在customer input中只输入。但是,当我输入时,它会合并接下来的两个字符串输入方向(如所附的pic所示)。我在这里做错了什么?

  • 我是selenium的新手,想用它来测试登录页面。我有下面的文本字段,我想在其中插入用户名。 我写了下面的代码,这是不起作用的: 提前感谢!

  • 本文向大家介绍MATLAB输入字符串,在C中进行修改,然后输出,包括了MATLAB输入字符串,在C中进行修改,然后输出的使用技巧和注意事项,需要的朋友参考一下 示例 在此示例中,我们说明了MATLAB MEX中的字符串操作。我们将创建一个MEX函数,该函数接受来自MATLAB的字符串作为输入,将数据复制到C字符串中,对其进行修改,然后将其转换回mxArrayMATLAB端。 此示例的主要目的是说明

  • 问题内容: 我的扩展程序具有一个包含项目的上下文菜单。我想要做的是:右键单击html元素(例如,输入或文本区域),然后选择并单击菜单中的某个项目时- 由扩展名定义的某些值将输入到输入中。 目前,我已经意识到。 简单的输入就可以了。 当存在具有自定义事件处理的输入(例如日历或电话输入或货币输入)时,问题就开始了,这些输入以某种方式转换了用户输入。 由于我直接在元素上设置了一个值-省略了处理逻辑,这会