javascript - 数字类型输入的onkeyup vs onchange

标签 javascript html validation

我在处理表单上的数字输入时遇到了一个小问题,特别是在用户修改它们时尝试调用验证 js 函数时。

<input type="number" name="somenumber" onkeyup="validateForm()" />

此方法仅在用户在框中键入数字时调用,当用户使用浏览器提供的向上/向下按钮时将被忽略。所以它不是完全有效。

<input type="number" name="somenumber" onchange="validateForm()" />

此方法非常适合使用向上/向下按钮的用户,但如果他们在框中键入数字,则在他们移动到另一个元素或在框外单击之前,该方法不会执行。这不是世界末日,但我希望用户能够在框中输入内容并立即能够单击当前禁用的提交按钮,而不是必须单击其他地方才能启用该按钮。

<input type="number" name="somenumber" onchange="validateForm()" onkeyup="validateForm()" />

因此,为了获得最佳的用户体验,我正在这样做。问题是该函数经常被调用两次。我猜它工作正常。用户甚至没有注意到它运行了两次。不过,我似乎遗漏了一些东西,必须有一些“正确”的方法来处理这个问题。

有吗?还是这只是我们必须解决的问题之一?

最佳答案

您可以使用 oninput 事件。

function validateForm() {
  console.log('changed');
}
<input type="number" name="somenumber" oninput="validateForm()" />

关于javascript - 数字类型输入的onkeyup vs onchange,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42237736/

相关文章:

html - 当文本旁边有 float 内容时,如何强制 Firefox 正确截断文本?

html - 使用 h1 的正确方法? (关于文档大纲和SEO)

php - 异常应该用于表单验证吗?

java - XML 验证中的问题。 MIn 出现工作不正常

java - 以最安全的方式使用准备好的语句

javascript - 如果部分有类(class)则开始播放视频

javascript - React/Redux,如何获取用户输入

javascript - 加载新页面时如何调整模式 iframe 的大小?

javascript - 奇怪的 jQuery 鼠标悬停/移出行为

javascript - 为什么我的 sql 语句在编辑器中有效,但在 JS 函数中无效?