【问题标题】:Event will not trigger事件不会触发
【发布时间】:2019-03-03 21:23:00
【问题描述】:

我有一个有多个输入的表单。一种输入是用户可以输入 ID。我需要验证 ID 是否唯一。我想为 onchange 事件调用 JavaScript 函数。但是,我无法触发它。我有一个 console.log,但是当我更改输入时它永远不会命中,所以我做错了。
这是我试图在更改时调用的函数

function checkUniqueID() {
  console.log("here");
  var $counter = 0;
  var tag = document.forms["userform"]["new_id"].value;
  while ($counter < $totalItems) {

  }
};
<div class="six wide field">
  <label for="ID">ID</label>
  <input type="text" id="new" name="new_id" placeholder="ID" onchange="checkUniqueID()">
</div>

我什至无法触发 console.log(“这里”)

【问题讨论】:

  • @lintu — 为什么这会对 this 代码产生影响?在调用函数之前,JS 不会尝试触摸 DOM。
  • 现场演示成功记录“这里”(然后在其他地方出错),但我无法用您提供的代码重现问题。
  • 您的输入元素不在表单内,因此您的选择器不会按原样工作。 let tag = document.getElementById("new").value 可以工作...
  • onchange 在您失去焦点后触发。

标签: javascript forms onchange


【解决方案1】:

onchange HTML 属性在输入失去焦点时触发。 因此,如果您正确地将 input#new_id 包含在这样的表单中:

<form name="userform">
  <div class="six wide field">
  <label for="ID">ID</label>
  <input type="text" id="new" name="new" placeholder="ID">
 </div>
</form>

在脚本文件中添加一个 eventListener 就足够了。

document.userform.new_id.onchange=function(){
    alert("ID changed to: "+this.value);
};

使用 jQuery 就这么简单:

$("#new").change(function(){
    alert("ID changed to: "+$(this).value;
}

这是一个有效的小提琴:

https://jsfiddle.net/edbL3kgp/

【讨论】:

  • k3lly.dev。谢谢您的意见。出于某种原因,我使用了来自 jsfiddle.net 示例的确切 java 脚本示例,但我仍然无法让它在我的 ID 更改时触发。我是否需要将该 JS 放在我的代码中的某个特定位置。我在一个 .php 文件中工作。这个 .php 文件中包含 HTML 和其他正在工作的 javascript
猜你喜欢
  • 1970-01-01
  • 2014-09-18
  • 2015-06-25
  • 2014-11-30
  • 2012-06-12
  • 1970-01-01
  • 2014-09-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多