Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Живой поиск в больше чем один input (https://javascript.ru/forum/misc/84230-zhivojj-poisk-v-bolshe-chem-odin-input.html)

l_2001 14.07.2022 10:26

Живой поиск в больше чем один input
 
Есть живой поиск на js+php.
$(function(){
    //Живой поиск
    $('.who').bind("change keyup input click", function() {
        if(this.value.length >= 2){
            $.ajax({
                type: 'post',
                url: "search.php", //Путь к обработчику
                data: {'who':this.value},
                response: 'text',
                success: function(data){
                    $(".search_result").html(data).fadeIn(); //Выводим полученые данные в списке
                }
            })
        }
    })
 
    $(".search_result").hover(function(){
        $(".who").blur(); //Убираем фокус с input
    })
    //При выборе результата поиска, прячем список и заносим выбранный результат в input
    $(".search_result").on("click", "li", function(){
        s_user = $(this).text();
        $(".who").val(s_user).attr('enabled', 'enabled'); //деактивируем input, если нужно
        $(".search_result").fadeOut();
    })
})


Если input один, то заполнение нормальное, ищет и вставляет данные из справочника, а если два или больше, то в полях вывод синхронный, что и понятно

while ($arr = sql_fetch_assoc($q)) {
$did = $arr['DocumentID'];
$who = trim($arr["DocumentByWho"]);
            $innerHTML .= '<td><input type="text" id="who" name="who" placeholder="' . $who . '" value="' . $who . '" class="who" autocomplete="off"><ul class="search_result"></ul></td>';
            $innerHTML .= '<td><button type="submit" name="Save" value="' . $did . '">Сохраним?</form></td></tr>';
        }


Выбирает из справочника скриптом
if(!empty($_POST["who"])){ //Принимаем данные
    $referal = trim(strip_tags(stripcslashes(htmlspecialchars($_POST["who"]))));
    $referal = addslashes($referal);
    $db_referal = sql_query($connbo,"SELECT * from bo.R_NAME_DMS WHERE name LIKE '%$referal%'")
    or die('Ошибка №'.__LINE__.'<br>Обратитесь к администратору сайта пожалуйста, сообщив номер ошибки.');
    while ($row = sql_fetch_array($db_referal)) {
        $name = str_replace("\n", "", $row["name"]);
        echo "\n<li1>".mb_strtoupper($name)."</li1>";
    }
}

А можно-ли как-то сделать так, чтобы заполнялся input только одной выбранной строки, а не двух или трёх? Заранее спасибо!


Часовой пояс GMT +3, время: 01:51.