首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检测更改的输入文本框

检测更改的输入文本框
EN

Stack Overflow用户
提问于 2011-05-27 21:41:16
回答 9查看 620.4K关注 0票数 311

我查看了许多其他问题,找到了非常简单的答案,包括下面的代码。我只是想检测何时有人更改了文本框的内容,但由于某些原因无法工作……我没有收到控制台错误。当我在浏览器的change()函数中设置断点时,它永远不会命中它。

代码语言:javascript
复制
$('#inputDatabaseName').change(function () { 
    alert('test'); 
});
代码语言:javascript
复制
<input id="inputDatabaseName">
EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2013-03-30 00:03:10

您可以使用jQuery中的input Javascript event,如下所示:

代码语言:javascript
复制
$('#inputDatabaseName').on('input',function(e){
    alert('Changed!')
});

在纯JavaScript中:

代码语言:javascript
复制
document.querySelector("input").addEventListener("change",function () {
  alert("Input Changed");
})

或者像这样:

代码语言:javascript
复制
<input id="inputDatabaseName" onchange="youFunction();"
onkeyup="this.onchange();" onpaste="this.onchange();" oninput="this.onchange();"/>
票数 572
EN

Stack Overflow用户

发布于 2011-05-27 21:42:43

尝试keyup而不是change。

代码语言:javascript
复制
<script type="text/javascript">
   $(document).ready(function () {
       $('#inputDatabaseName').keyup(function () { alert('test'); });
   });
</script>

这是the official jQuery documentation for .keyup()

票数 180
EN

Stack Overflow用户

发布于 2014-04-24 18:52:19

每个答案都缺少一些要点,所以这是我的解决方案:

代码语言:javascript
复制
$("#input").on("input", function(e) {
  var input = $(this);
  var val = input.val();

  if (input.data("lastval") != val) {
    input.data("lastval", val);

    //your change action goes here 
    console.log(val);
  }

});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="input">
<p>Try to drag the letters and copy paste</p>

Input Event键盘输入,鼠标拖动自动填充复制粘贴上测试。检查之前的值使其检测到实际的更改,这意味着在粘贴相同的内容或键入相同的字符等时不会触发。

工作示例:http://jsfiddle.net/g6pcp/473/

更新:

如果您希望仅在用户完成键入时运行change function ,并防止多次触发更改操作,您可以尝试这样做:

代码语言:javascript
复制
var timerid;
$("#input").on("input", function(e) {
  var value = $(this).val();
  if ($(this).data("lastval") != value) {

    $(this).data("lastval", value);
    clearTimeout(timerid);

    timerid = setTimeout(function() {
      //your change action goes here 
      console.log(value);
    }, 500);
  };
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="input">

如果用户开始输入(例如,"foobar")此代码阻止您的change action为用户输入的每个字母运行,并且仅在用户停止输入时运行,这对于当您将输入发送到服务器(例如,搜索输入)时特别有用,这样服务器只搜索一次搜索foobar,而不是六次搜索f,然后是fo,然后是foofoob,依此类推。

票数 115
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6153047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档