Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
33 / 4 / 1
Регистрация: 29.05.2014
Сообщений: 144

Получить значение id в отдельное поле

18.08.2015, 13:39. Показов 2606. Ответов 43
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.

нашёл живой ajax поиск достаточно простой и лёгко настраиваемый (для меня, как не знатока java script) - ссылка.

живой поиск

index.html
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!DOCTYPE HTML>
<html>
<head>
    <meta http-equiv="content-type" content="text/html">
    <meta charset="utf-8">
    <title>Поиск</title>
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <script src="js/search.js"></script>
    <link href="style.css" rel="stylesheet" type="text/css">
</head>
 
<body>
 
    <input type="text" name="referal" placeholder="Введите фамилию" value="" class="who"  autocomplete="off">
    <ul class="search_result"></ul>
 
</body>
</html>

style.css
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
.search{
    position:relative;
}
 
.search_result{
    background: #FFF;
    border: 1px #ccc solid;
    width: 350px;
    border-radius: 4px;
    max-height:100px;
    overflow-y:scroll;
    display:none;
}
 
.search_result li{
    list-style: none;
    padding: 5px 10px;
    margin: 0 0 0 -40px;
    color: #0896D3;
    border-bottom: 1px #ccc solid;
    cursor: pointer;
    transition:0.3s;
}
 
.search_result li:hover{
    background: #F9FF00;
}

search.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
 
define("DB_HOST","localhost");
define("DB_NAME","rtss"); //Имя базы
define("DB_USER","rtss"); //Пользователь
define("DB_PASSWORD","12345"); //Пароль
 
$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$mysqli -> query("SET NAMES 'utf8'") or die ("Ошибка соединения с базой!");
 
if(!empty($_POST["referal"])){ //Принимаем данные
 
    $referal = trim(strip_tags(stripcslashes(htmlspecialchars($_POST["referal"]))));
 
    $db_referal = $mysqli -> query("SELECT * from passport WHERE surname LIKE '%$referal%'")
    or die('Ошибка №'.__LINE__.'<br>Обратитесь к администратору сайта пожалуйста, сообщив номер ошибки.');
 
    while ($row = $db_referal -> fetch_array()) {
        echo "\n<li>".$row["surname"].' '.$row["name"].' '.$row["middle_name"].' ('.$row["birth_year"].')';"</li>";
    }
}
?>

search.js
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
$(function(){
    
    //Живой поиск
    $('.who').bind("change keyup input click", function() {
        if(this.value.length >= 2){
            $.ajax({
                type: 'post',
                url: "search.php", //Путь к обработчику
                data: {'referal':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); //деактивируем input, если нужно
        $(".search_result").fadeOut();
    })
})


Настроил под себя, чтобы искал в базе по фамилии и выводил в выпадающем списке ФИО+год.

В файле search.js есть строчка кода, которая помещает в поле поиска выбранный результат:

JavaScript
1
2
3
4
5
6
//При выборе результата поиска, прячем список и заносим выбранный результат в input
    $(".search_result").on("click", "li", function(){
        s_user = $(this).text();
        $(".who").val(s_user);
        $(".search_result").fadeOut();
    })
конкретно $(".who").val(s_user); - помещаем в поле с class=who значения переменной s_user. А в эту переменную перед этим заносим весь выбранный текст из выпадающего списка (списка поиска).

Проблема вот в чём - скажите, пожалуйста, как заносить в переменную s_user не весь текст из выпадающего списка, пункт которого мы выбрали. А только какое-то одно значение.
Например, в списке предлагают Семён Семёнов Семёнович (20,04,1990г)
А при выборе заносится в строчку только Семён.

Вообще, мне нужно получить id выбранной записи. Но если пойму, как заносить только одно что-то, то смогу и это.

Помогите, пожалуйста!!!!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.08.2015, 13:39
Ответы с готовыми решениями:

Для каждой переменной-отдельное поле или массивом в одно поле?
Можно ли несколько переменных загнать в массив через сериализацию в одну поле или все же оптимальнее делать для каждой переменной отдельное...

Поле Дата, как вывести только год в отдельное поле?
Как из поля Дата вывести только год, т.е. допусти в поле значение 25.05.2010, а нужно что бы выводило только 2010? За ранее благодарен.

Отдельное поле счетчика и сортировка
Здравствуйте! Прошу помочь с сортировкой: в форме frmAEKP отображаются услуги в списке. У каждой услуге при добавлении в КП...

43
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
18.08.2015, 17:56
Студворк — интернет-сервис помощи студентам
Mothur, не знаю как в java это всё делается, я не java-программист
я - JavaScript-разработчик
запомните Java это вообще не JavaScript и не наоборот, и никогда им не был, это совершенно разные вещи

ну ладно, волна возмущения стихла

короче у каждого элемента типа input есть value(исключение это type="file") и он доступен на чтение и запись, и он представляется строкой, в jquery() это берётся через .val()

а уже с этими взятыми данными вы можете делать всё, что хотите
1
33 / 4 / 1
Регистрация: 29.05.2014
Сообщений: 144
18.08.2015, 18:05  [ТС]
BANO,

я понимаю, что это разные вещи. Извиняюсь, конечно. Я просто сократил... Да-да, надо было JS написать, но..


получается так?

JavaScript
1
2
3
4
5
6
$(".search_result2").bind("click", "li", function(){
        s_user = $(this).text().trim().match(/^[^\s]+/i)[0];
        $(".who2").val(s_user); //деактивируем input, если нужно
        $(".search_result2").fadeOut();
        var arr=[];
        arr.push(val(s_user))
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
18.08.2015, 18:09
Mothur, нет не так
JavaScript
1
2
        var arr=[];// это надо задавать примерно в начале скрипта, а так от этого смысла нету
        arr.push(val(s_user))// я конечно извиняюсь, но это бред
надо как-то так
JavaScript
1
2
3
var idArr=[]// это вообще пусть в начале файла стоит
// тут код код код
idArr.push(s_user) // это вместо arr.push(val(s_user))
1
33 / 4 / 1
Регистрация: 29.05.2014
Сообщений: 144
18.08.2015, 18:25  [ТС]
BANO,

обнаружилось, что почему-то при поиске (если находит несколько вариантов), на какой не кликнешь, сохранится первый.

0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
18.08.2015, 18:29
Лучший ответ Сообщение было отмечено Mothur как решение

Решение

Mothur, дк мы смотрим на первый элемент li, а так чтобы он брал тот который нужен это скрипт другой нужен
JavaScript
1
2
3
4
5
6
//При выборе результата поиска, прячем список и заносим выбранный результат в input
    $(".search_result").on("click", "li", function(e){
        s_user = $(e.target||e.srcElement).text();
        $(".who").val(s_user);
        $(".search_result").fadeOut();
    })
1
33 / 4 / 1
Регистрация: 29.05.2014
Сообщений: 144
18.08.2015, 18:33  [ТС]
BANO,

увы(
в консоли ничего
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
18.08.2015, 18:38
Лучший ответ Сообщение было отмечено Mothur как решение

Решение

дк ничего и не должно быть

Добавлено через 15 секунд
всё работать должно
1
33 / 4 / 1
Регистрация: 29.05.2014
Сообщений: 144
18.08.2015, 18:43  [ТС]
BANO, по прежнему выбирает только первый вариант, если их неколько

Добавлено через 4 минуты
BANO,
очень сильно извиняюсь!!!! не тот вариант запустил. Извините. Всё работает.
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
18.08.2015, 18:54
Лучший ответ Сообщение было отмечено Mothur как решение

Решение

ну вот я же говорил
1
33 / 4 / 1
Регистрация: 29.05.2014
Сообщений: 144
18.08.2015, 19:15  [ТС]
BANO, ну да) спасибо)

Возвращаясь к массивам. У меня два вопроса:
1) как выводить под поиском в реальном времени содержимое массива? Т.е. осуществил поиск, нажал на вариант в списке. Он занёсся в массив. И под строкой поиска отобразилось содержимое массива. Если искать ещё и выбрать вариант, то ниже отобразится в массиве уже два выбора. Я добавил вывод, но ничего не получается...

JavaScript
1
2
3
4
5
6
7
8
9
10
//При выборе результата поиска, прячем список и заносим выбранный результат в input
        var idArr=[];
        $(".search_result2").on("click", "li", function(e){
        s_user = $(e.target||e.srcElement).text();
        $(".who2").val(s_user);
        $(".search_result2").fadeOut();
        idArr.push(s_user);
    })
    idArr.join();
})
2) как потом этот массив получить для работы php в виде какой-нибудь переменной аля $idArr?
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
18.08.2015, 20:45
Лучший ответ Сообщение было отмечено Mothur как решение

Решение

почти готово
1
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
18.08.2015, 21:04
Лучший ответ Сообщение было отмечено Mothur как решение

Решение

Mothur, вот сделал наконец
основной SEARCH.js теперь выглядит так
да он оказался не таким уж маленьким
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
$(function(){
    window.selectedStrs=[];
    function dobbleFinder(a,b){
        a.forEach(function(e){
            this.forEach(function(el,i){
                Object.keys(el).some(function(key){
                    return e[key]==el[key]
                })&&(this.splice(i,1))
            },this)
        },b)
    }
 
    //Живой поиск
    function search() {
        if(this.value.length >= 2)
            $.ajax({
                type: 'post',
                url: "search.php", //Путь к обработчику
                data: {'referal':this.value},
                dataType:"json",
                success: function(data){
                    $(".search_result").empty();
                    dobbleFinder(selectedStrs,data);
                    console.log(selectedStrs,data);
                    $.each(data, function(){
                        $("<li>"+this.surname+" "+this.name+" "+this.middle_name+" ("+this.birth_year+")</li>")
                            .data("searchStr",this)
                            .appendTo($(".search_result"))
                    });
                    window.data=data;
                    $(".search_result").fadeIn();
                }
            });
        if(this.value.length==0)
            $(".search_result").fadeOut()
    }
    function send(url){
        $.ajax({
            type: 'post',
            url: url, //Путь к обработчику
            data: {users:JSON.stringify(selectedStrs)}
        })
    }
 
 
    $('.who').bind("change keyup input click",search);
    $(".search_result").hover(function(){
        $(".who").blur(); //Убираем фокус с input
    })
    
    //При выборе результата поиска, прячем список и заносим выбранный результат в input
    $(".search_result").bind("click", "li", function(e){
        $elem=$(e.target||e.srcElement);
        s_user = $elem.text().trim().match(/^[^\s]+/i)[0];
        $(".selected_users").append($elem);
        $(".who").val(s_user); //деактивируем input, если нужно
        selectedStrs.push($elem.data("searchStr"));// закидываем в массив для отправления
        $elem.bind("click",function(){
            (sel=selectedStrs).splice(sel.indexOf($(this).data("searchStr")));
            this.parentNode.removeChild(this);
            search.call($('.who')[0]);
        })
    })
});

в php я тоже кое-что поменял
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
 
define("DB_HOST","localhost");
define("DB_NAME","rtss"); //Имя базы
define("DB_USER","rtss"); //Пользователь
define("DB_PASSWORD","12345"); //Пароль
 
$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$mysqli -> query("SET NAMES 'utf8'") or die ("Ошибка соединения с базой!");
 
if(!empty($_POST["referal"])){ //Принимаем данные
 
    $referal = trim(strip_tags(stripcslashes(htmlspecialchars($_POST["referal"]))));
 
    $db_referal = $mysqli -> query("SELECT * from passport WHERE surname LIKE '%$referal%'")
    or die('Ошибка №'.__LINE__.'<br>Обратитесь к администратору сайта пожалуйста, сообщив номер ошибки.');
    // я позволил себе кое-что изменить
    $arr=[];
    while ($row = $db_referal -> fetch_array())
        array_push($arr,$row);
 
    echo json_encode($arr);
}
честно говоря с настоящим php я не тестировал, у меня мускула нету, чтобы проверять базу данных, по этому я просто написал, что вспомнил
то есть php может и не работать, тут вы уж лучше тогда в другой раздел закинте вопрос типа: "вот есть этот скрипт, надо, чтобы он выкидывал в ответ json массив"
Вложения
Тип файла: rar Live.rar (66.3 Кб, 1 просмотров)
1
33 / 4 / 1
Регистрация: 29.05.2014
Сообщений: 144
18.08.2015, 21:18  [ТС]
BANO,
Обалденно просто)! Спасибо)
Код js да... большой получился) Надеюсь, что смогу разобраться. Поменять что-то, если нужно)

А насчёт php, то в связке с js как оно должно работать? как вами задумывалось?
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
18.08.2015, 21:39
Mothur, теперь php возвращает не готовый html, а json массив
в аяксах вы там просто dataType поставьте "json"

Добавлено через 1 минуту
Mothur, и ещё
58-62 строки - удаление из "выбранных" юзеров
1
33 / 4 / 1
Регистрация: 29.05.2014
Сообщений: 144
18.08.2015, 22:08  [ТС]
BANO, ну, так так и стоит.

т.е., как я понял, схема такая:

1) страница с поиском загружается
2) поиск. отображаются варианты для выбора в виде выпадающего списка
3) при выборе варианта из списка что-то (что именно?) отправляется в php
4) там заносится в массив
5) массив возвращается обратно.
6) из элементов массива формируется список под строчкой поиска, состоящий из выбранных элементов
7) При выборе нового элемента из выпадающего списка, новые данные добавляются в массив в дополнение к старым.
8) Удаление из массива по щелчку на элемент из списка под строчкой. Тоже через отправку на php. удаление из массива. возврат массива. формирование на основании массива списка.

так?
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
18.08.2015, 22:41
нет, не так
  1. страница загружается
  2. пользователь вводит запрос, он отправляется на серв, тот выдаёт массив со всем, что найдёт
  3. пользователь принимает этот массив, удаляет из него уже выбранные элементы и показывает "варианты" запроса
1
33 / 4 / 1
Регистрация: 29.05.2014
Сообщений: 144
18.08.2015, 22:44  [ТС]
BANO,

ну да. про удаление уже выбранного не подумал. Умно.

а уже выбранные варианты - они ведь тоже в массиве хранятся?
в каком виде? что там хранится? Идентификатор - id_passport?
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
18.08.2015, 22:49
Mothur, нет я не знаю точно что там хранится, вы ведь выбираете все столбцы из таблицы, соответственно в переменной selectedStrs хранится массив этих "sql строк", но в виде объектов js
короче если у вас в таблице pasport есть этот ваш pasport_id - то в массиве selectedStrs все объекты имеют свойство pasport_id

Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от Mothur Посмотреть сообщение
про удаление уже выбранного не подумал. Умно.
а это опыт и просчитывание следующего вашего вопроса)))
вот блин я шахматист хренов

1
33 / 4 / 1
Регистрация: 29.05.2014
Сообщений: 144
18.08.2015, 22:59  [ТС]
BANO,

Цитата Сообщение от BANO Посмотреть сообщение
если у вас в таблице pasport есть этот ваш pasport_id
есть. это ключевое поле таблицы с неповторяющимися значениями.

Цитата Сообщение от BANO Посмотреть сообщение
то в массиве selectedStrs все объекты имеют свойство pasport_id
в смысле все объёкты имеют свойство id_passport??? O_O

Цитата Сообщение от BANO Посмотреть сообщение
selectedStrs хранится массив этих "sql строк"
т.е. вот так:
selectedStrs=[0:id_passport, второе, третье...; 1:id_passport, второе, третье; 2: id_passport, второе, третье)

соответственно можно извлечь из массива циклом все id_passport.
как мне получить массив selectedStrs в виде, в котором с ним можно будет работать через php?

Цитата Сообщение от BANO Посмотреть сообщение
а это опыт и просчитывание следующего вашего вопроса)))
вот блин я шахматист хренов
ахаха)) Я думаю, что это важное качество) очень.
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
18.08.2015, 23:13
Цитата Сообщение от Mothur Посмотреть сообщение
т.е. вот так:
selectedStrs=[0:id_passport, второ
нет не так, js - не php тут массивы имеют такой вид
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
selectedStrs=[// это массив
    {// это объект
        name: "test1",
        surname:"",
        pasport_id:3423845,
        ...
    },
    {// это объект
        name: "test1",
        surname:"",
        pasport_id:3423845,
        ...
    },
    ...
]
а для передачи на серв там есть функция send()
а в php получить так
PHP
1
2
3
<?
$users_arr=encode_json($_POST["users"]) // теперь это массив php, обрабатываете как хотите,
// но лучше не использовать send(), лучше почитать документацию по $.ajax
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.08.2015, 23:13
Помогаю со студенческими работами здесь

Ввод реквизитов организации: каждую цифру в отдельное поле
Здравствуйте. Всех с праздником 1 Мая! У меня возникла необходимость ввода данных реквизитов сторонних организаций. Вот вопрос: ...

Вывод большого текста в отдельное поле при клике
Есть Поле1 с текстом который не помещается в данное поле. Редактирование неудобное. Как вы вести при клике на Поле1 текст в Поле2...

Из ComboBox-а вытащить 3 слова, и вставить каждое слово в отдельное текстовое поле
из комбобокса нужно вытащить 3 слова и вставить каждое слово в отдельное текстовое поле. то есть..у меня выводиться в комбо ФИО..мне нужно...

Возвращение отдельное значение
Добрый день! Нужно извлечь сумму по заказам из БД SqlCommand lcScalarSum = new SqlCommand(&quot;SELECT SUM(addsum) as addsum FROM clients...

Как получить значение выбранное в поле со списком
Необходимо получить значение выбранное в поле со списком в переменную. Например, как вот тут...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru