0

基本的に、従業員がログインしてさまざまなタスクを実行できるビジネス用のイントラネットを持っています。効率を改善するために、従業員がログインする前にドロップダウン メニューからタスクを選択できる「 QuickTask 」機能と呼んでいる機能を実装しました。さまざまな部門があるため、従業員がユーザー名を入力して送信ボタンを押すことができるスクリプトを作成しました。これにより、部門に関連するタスクのリストが入力されます。送信ボタンを実際に使用する必要があるため、これは一時的なものです。ログインする。ただし、ユーザー名を入力するとリストにデータが入力されるように、これを変更したいと思います。どうすればこれを行うことができますか?

私は3つのファイルを持っています。

1. index.php (ログインページ)

2.quickTask.js(jQuery関数)

3. define_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);
            });
        }
    });
});

define_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>";

}

?>

ライブの例を次に示します。

4

5 に答える 5

2

ユーザーが入力を停止するまで.keyup()ハンドラーを遅らせる方法から変換された、必要なものは次のとおりです。あなたのニーズに。ユーザーが200ミリ秒間入力を停止した場合、クエリが実行されます。時間は2番目のパラメーターで遅延するように設定されており、任意の時間使用できます。しかし、私は本当にオートフィルプラグインの使用を提案する人たちと一緒です-なぜ車輪の再発明をするのですか?

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() {...});

ただし、一度に 1 つの ajax リクエストのみを実行するようにしてください。

于 2012-08-20T18:54:50.287 に答える
0

変化する

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

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

それを行う必要があります。#username入力のクリックイベントではなく、キーアップイベントが必要です#thing

于 2012-08-20T18:55:11.887 に答える
0

基本的に、クリック機能は同じままです。ユーザー名入力のキーアップイベントに影響を与えるだけです:

$('#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 に答える