所以基本上我有一个企业内部网,员工可以登录并执行各种任务。为了提高效率,我已经实现了我称之为“ QuickTask ”的功能,员工可以在登录之前通过下拉菜单选择任务,这样就可以直接进入。由于有各个部门,我制作了一个脚本,员工可以输入用户名并按下提交按钮,填充与其部门相关的任务列表,这只是暂时的,因为提交按钮需要实际使用登录。但是,我想更改此名称,以便在键入用户名时填充列表。我怎么能这样做?
我有3个文件。
1。 index.php(登录页面)
2。 quickTask.js(jQuery函数)
第3。 determine_department.php(quickTask.js与之通信的文件)
以下是代码:
的index.php:
<form action="javascript:void(0);" method="post">
Username: <input type="text" id="username" name="username" /><br />
Password: <input type="password" name="password" /><br />
<i>QuickTask:</i><div id="quickTask"></div>
<br />
<a href="reset_password.php">Forgot Password?</a><br />
<input class="test" type="submit" id="thing" value="Log In" />
</form>
quickTask.js
$(document).ready(function() {
$('input#thing').on('click', function() {
var username = $('input#username').val();
if ($.trim(username) != '') {
$.post('../inc/determine_department.php', {
username: username
}, function(data) {
$('div#quickTask').html(data);
});
}
});
});
determine_department.php:
<?php
$username = $_POST['username'];
if(isset($username) === true && empty($username) === false) {
mysql_connect("localhost", "root", "24Bottlesofgin24");
mysql_select_db("intranet");
$sql = "SELECT DEPARTMENT FROM `employees` WHERE USERNAME='$username'";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)){
$depID = $row['DEPARTMENT'];
}
$sql2 = "SELECT * FROM `quicktask` WHERE DEP_ID='$depID'";
$result2 = mysql_query($sql2);
echo "<select name=\"QT\">";
echo "<option value=\"\" selected=\"selected\" disabled>-- Please Pick One --</option>";
while($row2 = mysql_fetch_array($result2)){
echo "<option value=\"" . $row2['DEP_ID'] . "\">" . $row2['TASK'] . "</option>";
}
echo "</select>";
}
?>
以下是一个实例:
答案 0 :(得分:2)
这是您想要的,从How to delay the .keyup() handler until the user stops typing?转换为您的需求。如果/当用户停止键入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)
});
});
答案 1 :(得分:0)
$('input#username').on('keyup', function() {...});
但最好确保一次只运行一个ajax请求。
答案 2 :(得分:0)
更改
$('input#thing').on('click', function() {
到
$('input#username').on('keyup', function() {
应该这样做,您希望#username
输入上的keyup事件而不是#thing
的点击事件
答案 3 :(得分:0)
基本上,点击功能仍然相同。您只需要将其影响到用户名输入的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);
});
}
});
答案 4 :(得分:0)
的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>";