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

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

18.08.2015, 13:39. Показов 2532. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru