我查看了许多其他问题,找到了非常简单的答案,包括下面的代码。我只是想检测何时有人更改了文本框的内容,但由于某些原因无法工作……我没有收到控制台错误。当我在浏览器的change()函数中设置断点时,它永远不会命中它。
$('#inputDatabaseName').change(function () {
alert('test');
});<input id="inputDatabaseName">发布于 2013-03-30 00:03:10
您可以使用jQuery中的input Javascript event,如下所示:
$('#inputDatabaseName').on('input',function(e){
alert('Changed!')
});在纯JavaScript中:
document.querySelector("input").addEventListener("change",function () {
alert("Input Changed");
})或者像这样:
<input id="inputDatabaseName" onchange="youFunction();"
onkeyup="this.onchange();" onpaste="this.onchange();" oninput="this.onchange();"/>发布于 2011-05-27 21:42:43
尝试keyup而不是change。
<script type="text/javascript">
$(document).ready(function () {
$('#inputDatabaseName').keyup(function () { alert('test'); });
});
</script>这是the official jQuery documentation for .keyup()。
发布于 2014-04-24 18:52:19
每个答案都缺少一些要点,所以这是我的解决方案:
$("#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);
}
});<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 ,并防止多次触发更改操作,您可以尝试这样做:
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);
};
});<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,然后是foo和foob,依此类推。
https://stackoverflow.com/questions/6153047
复制相似问题