【问题标题】:Make jQuery UI autocomplete source dependent on another autocomplete使 jQuery UI 自动完成源依赖于另一个自动完成
【发布时间】:2015-07-31 05:36:35
【问题描述】:

问题出在标题中,我不知道如何使自动完成小部件依赖于另一个小部件。在我的示例中,我的数据库中有 2 列:

  • 名字
  • 姓氏

还有一些行:

Dupont Francois
Dupont Oliver
Lapeche Jean 

如果我在第一个自动完成输入中输入Dupont,我希望第二个自动完成建议OliverFrancois不是Jean

这是我的 HTML 代码:

<form action="../../controler/add/addUserDevice.php" onsubmit="return verifUserDevice(this)" method="post">
<table>
    <tr>
        <td>Last Name</td> 
        <td><input type="text" class="userLastName" name="userLastName"/></td>
    </tr>
    <tr>
        <td>First Name</td> 
        <td><input type="text" class="userFirstName" name="userFirstName" /</td>    
    </tr>
    <tr>
        <td colspan="3"><input class="buttonIndex" type="submit" value="Create" /></td>
    </tr>
</table>

还有我用于第二次自动完成的 PHP 代码

<?php
include('../../model/connexion_sql.php');

if ((include_once '../../model/connexion_sql.php') === FALSE)
    exit('erreur include');

if (isset($_GET['term'])) {
    $connection = new Connection;
    $connection->connection();
    $conn    = $connection->getConnection();
    $requete = $conn->prepare('SELECT userFirstName FROM user WHERE userFirstName LIKE :term');
    $requete->execute(array('term' => $_GET['term'] . '%'));
    $array = array();
    while ($donnee = $requete->fetch()) {
        $array[] = $donnee['userFirstName'];
    }
    echo json_encode($array);
}
?>

还有我的 JavaScript:

$(function(){ 
    $(".userFirstName").autocomplete({
        source: '../../model/autocomplete/userFirstName.php',
        minLength: 1
    });
});

【问题讨论】:

    标签: php jquery ajax jquery-ui jquery-ui-autocomplete


    【解决方案1】:
    $(function() {   
        $(".userFirstName").autocomplete({   
            autoFocus:true,
            source: function( request, response ) {        
                $.ajax({       
                    url: '../../model/autocomplete/userFirstName.php?userLastName=' + $("#userLastName").val() + "&term=" + request.term,   
                dataType: "json",
                success: function( data ) {           
                    response(data);      
                }
               });   
            },    
            minLength: 1   
        });
    });
    

    您的 ajax 请求将如下所示。

    id="userLastName" 添加到您的 userLastName 输入中。

    在你的 PHP 脚本中添加这个

    if($_GET['userLastName']) {
        $userLastName = $_GET['userLastName'];
    } else $userLastName = null;
    

    然后改变

    SELECT userFirstName FROM user 
    WHERE userFirstName LIKE :term
    

    作者

    SELECT userFirstName FROM user 
    WHERE userFirstName LIKE :term
    AND (userLastName = :userLastName OR :userLastName is null)
    

    【讨论】:

    • 它出现错误:PHP 致命错误:未捕获的异常 'PDOException' 带有消息 'SQLSTATE[HY093]:无效的参数号:绑定变量的数量与 /var/www 中的令牌数量不匹配/base/assets/model/autocomplete/userFirstName.php:19\
    • 我以前做过,这不是错误,但我的自动完成功能没有发生任何事情......看起来这个请求有 0 行......即使 LastName 是空的
    • 它有效,我得到了一排......这很奇怪!但我的自动完成功能仍然不起作用
    • 成功的警报不起作用,但错误的警报起作用。我有这个:使用未定义的常数项 - 假定“术语”不知道为什么
    • 我忘记了,我更改了数据中的顺序: url: '../../model/autocomplete/userFirstName.php?term=' + request.term + '&userLastName=' + $("#userLastName").val(),我也忘记改变我的回声(这就是为什么它是一个错误),但现在,它可以工作了!真的谢谢你
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    • 2011-07-23
    相关资源
    最近更新 更多