Php 如何将这个jqueryclick函数转换为keyup函数?
因此,基本上我有一个企业内部网,员工可以登录并执行各种任务。为了提高效率,我实施了我称之为QuickTask的功能,员工可以在登录前通过下拉菜单选择一项任务,以便直接进入该任务。由于有不同的部门,我制作了一个脚本,员工可以在其中输入用户名并按下提交按钮。它会填充与其部门相关的任务列表,这只是暂时的,因为提交按钮需要用于实际登录。但是,我想更改此设置,以便在他们键入用户名时填充列表。我怎么能这样做 我有3个文件 一,。index.php登录页面 二,。quickTask.js jQuery函数 三,。确定quickTask.js文件与之通信的\u department.php 代码如下: index.php: 确定_department.php: 下面是一个活生生的例子: 但最好确保一次只运行一个ajax请求。更改Php 如何将这个jqueryclick函数转换为keyup函数?,php,jquery,mysql,html,Php,Jquery,Mysql,Html,因此,基本上我有一个企业内部网,员工可以登录并执行各种任务。为了提高效率,我实施了我称之为QuickTask的功能,员工可以在登录前通过下拉菜单选择一项任务,以便直接进入该任务。由于有不同的部门,我制作了一个脚本,员工可以在其中输入用户名并按下提交按钮。它会填充与其部门相关的任务列表,这只是暂时的,因为提交按钮需要用于实际登录。但是,我想更改此设置,以便在他们键入用户名时填充列表。我怎么能这样做 我有3个文件 一,。index.php登录页面 二,。quickTask.js jQuery函数 三
$('input#thing').on('click', function() {
到
应该这样做,您希望用户名输入上的keyup事件而不是click事件基本上,click函数仍将保持它们相同。您只需将其影响到用户名输入的keyup事件:
$('#username').keyup( function() {
var username = $('input#username').val();
if($.trim(username) != '') {
$.post('../inc/determine_department.php', {username: username}, function(data){
$('div#quickTask').html(data);
});
}
});
javascript:
$('input#thing').keyup(function()
mysql:
$sql = "SELECT * FROM `quicktask` WHERE DEP_ID IN (SELECT DEPARTMENT FROM `employees` WHERE USERNAME like '".$username."%')";
$result = mysql_query($sql);
echo "<select name=\"QT\">";
echo "<option value=\"\" selected=\"selected\" disabled>-- Please Pick One --</option>";
while($row = mysql_fetch_array($result)){
echo "<option value=\"" . $row['DEP_ID'] . "\">" . $row['TASK'] . "</option>";
}
echo "</select>";
这是你想要的,转化为你的需要。如果/当用户停止键入200毫秒时,它将运行查询,时间由第二个参数设置为延迟,您可以在任意时间内使用它。然而,我真的同意那些建议使用自动填充插件的人——为什么要重新发明轮子
var delay = (function(){
var timer = 0;
return function(callback, ms){
clearTimeout (timer);
timer = setTimeout(callback, ms);
};
})();
$(document).ready(function() {
$('input#username').on('keyup', function() {
delay(function(){
var username = $('input#username').val();
if($.trim(username) != '') {
$.post('../inc/determine_department.php', {username: username}, function(data){
$('div#quickTask').html(data);
});
}
},200)
});
});
如果你不知道怎么做,我建议你找一个自动完成的呕吐物。包括一个,还有一个。谁在投票关闭所有东西?!疯子我今天遇到的每一个问题。除了错误的输入控件…OP希望在他们键入用户名时完成,而不是提交按钮的键控。虽然从技术上来说,这可以回答问题,不建议在每个keyup事件上触发一个新的ajax请求。@bfavaretto如果您阅读我完整的帖子,您会看到我已经说过了;虽然从技术上来说,这可以回答这个问题,但不建议在每个keyup事件上触发新的ajax请求。您应该将ajax请求分配给一个变量,并中止keyup上现有的ajax请求。一些洪水控制需要使用setTimeout合并。因此,它会将查找延迟半秒,如果再次按下另一个键,则会取消先前的设置超时,并创建了一个新的设置为什么要经历使用setTimeout和timed函数的所有麻烦,而您只需在keyup上中止现有的请求?使用setTimeout,您可以确保请求从一开始就不会启动。这正是我想说的…但是使用实际的代码。对不起,伙计,你们聊天的时候,我在看并打字。刚刚看到线程+1。另外,我觉得混合动力车也不错。有一个像你一样的延迟,但是第一次缓存列表,并且只在另一个设置的延迟上刷新缓存的列表。或者php文件可以将列表缓存一段时间。我知道OP说列表可能会改变,但我怀疑用户名列表会每10秒甚至每分钟改变一次。将其缓存一段时间可能会在效率和可用性之间找到一个很好的平衡点。如果我可以涉入其中,在我看来,公司中的大多数人都会知道他们的用户名,prob在完成之前不会停止键入。因此,延迟应该只意味着一个请求和一个很短的列表。但我是一个缓存而不是多个请求的人usually@FrançoisWahl,记住缓存的列表不是用户名。这不是一个典型的自动完成,而是根据用户名中找到的部门,他们可以访问的任务的数量
$('input#username').on('keyup', function() {
$('#username').keyup( function() {
var username = $('input#username').val();
if($.trim(username) != '') {
$.post('../inc/determine_department.php', {username: username}, function(data){
$('div#quickTask').html(data);
});
}
});
$('input#thing').keyup(function()
$sql = "SELECT * FROM `quicktask` WHERE DEP_ID IN (SELECT DEPARTMENT FROM `employees` WHERE USERNAME like '".$username."%')";
$result = mysql_query($sql);
echo "<select name=\"QT\">";
echo "<option value=\"\" selected=\"selected\" disabled>-- Please Pick One --</option>";
while($row = mysql_fetch_array($result)){
echo "<option value=\"" . $row['DEP_ID'] . "\">" . $row['TASK'] . "</option>";
}
echo "</select>";
var delay = (function(){
var timer = 0;
return function(callback, ms){
clearTimeout (timer);
timer = setTimeout(callback, ms);
};
})();
$(document).ready(function() {
$('input#username').on('keyup', function() {
delay(function(){
var username = $('input#username').val();
if($.trim(username) != '') {
$.post('../inc/determine_department.php', {username: username}, function(data){
$('div#quickTask').html(data);
});
}
},200)
});
});