0

所以基本上我有一个企业内部网,员工可以登录并执行各种任务。为了提高效率,我实现了我所谓的“快速任务”功能,员工可以在登录之前通过下拉菜单选择任务,以便直接进入。由于有不同的部门,我制作了一个脚本,员工可以在其中输入他们的用户名并按下提交按钮,它会填充与其部门相关的任务列表,这只是暂时的,因为提交按钮需要用于实际登录。但是,我想更改此设置,以便在他们键入用户名时填充列表。我怎么能这样做?

我有 3 个文件。

1. index.php(登录页面)

2. quickTask.js(jQuery函数)

3.determine_department.php(quickTask.js正在与之通信的文件)

这是代码:

索引.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>

快速任务.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);
            });
        }
    });
});

确定部门.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>";

}

?>

这是一个活生生的例子:

4

5 回答 5

2

这是您想要的,从如何延迟 .keyup() 处理程序直到用户停止输入?根据您的需要。如果/当用户停止输入 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)
    });

    });
于 2012-08-20T19:04:27.880 回答
0
$('input#username').on('keyup', function() {...});

但最好确保一次只运行一个 ajax 请求。

于 2012-08-20T18:54:50.287 回答
0

改变

 $('input#thing').on('click', function() {

 $('input#username').on('keyup', function() {

应该这样做,您希望#username输入上的 keyup 事件而不是 click 事件#thing

于 2012-08-20T18:55:11.887 回答
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);
        });
    }
});
于 2012-08-20T18:57:23.420 回答
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>";
于 2012-08-20T18:57:47.830 回答