如何将此jQuery单击功能转换为键盘功能?

时间:2012-08-20 18:51:57

标签: php jquery mysql html

所以基本上我有一个企业内部网,员工可以登录并执行各种任务。为了提高效率,我已经实现了我称之为“ 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>";

}

?>

以下是一个实例:

5 个答案:

答案 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>";