С Новым годом! Форум программистов, компьютерный форум, киберфорум
React/ReactJS
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 01.07.2024
Сообщений: 12

Поиск по нажатию кнопки

08.10.2024, 14:39. Показов 744. Ответов 5
Метки нет (Все метки)

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

В form, пытаюсь введя в поле input фразу (или часть её), по нажатию button, найти в массиве возможные совпадения.

Массив в db.json
JSON
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
{
    "todos": [
        {
            "userId": 1,
            "id": 1,
            "title": "delectus aut autem",
            "completed": false
        },
        {
            "userId": 1,
            "id": 2,
            "title": "quis ut nam facilis et officia qui",
            "completed": false
        },
        {
            "userId": 1,
            "id": 3,
            "title": "fugiat veniam minus",
            "completed": false
        },
        {
            "userId": 1,
            "id": 4,
            "title": "et porro tempora",
            "completed": true
        },
        {
            "userId": 1,
            "id": 5,
            "title": "laboriosam mollitia et enim quasi adipisci quia provident illum",
            "completed": false
        }
    ]
}
…………………………..

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
const [todos, setTodos] = useState([]);
const [dataSearch, setDataSearch] = useState('');
 
………………………………….
 
const filteredTodos = todos.filter((obj, index, array) => {
        return obj.title.toLowerCase().includes(dataSearch);
    });
 
………………………………
 
<div class='inputWithButton'>
                <form>
                    <input type="text" placeholder="Поиск..." />
                    <button type="submit" onClick={ filteredTodos }>[Magnifying glass icon]</button>
                </form>
            </div>
            <div>
                <h3>Найдено:</h3>
                {
                    filteredTodos.map(({ id, title }) => (
                        <div key={id}>
                            {id} - {title}
                        </div>
                    ))
                }
            </div>
Не подскажите, как тут сделать? Спасибо!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.10.2024, 14:39
Ответы с готовыми решениями:

Вывод цифры по нажатию кнопки
Доброе время суток! Вывожу в цикле map() 10 кнопок. Не подскажите как при нажатии на кнопку 1, в alert(1); выводилось 1, при нажатии...

Поиск по нажатию кнопки
Всем привет, такая проблема. На форме есть датагрид1, датагрид2, кнопка1 и кнопка2 и текстбокс. В текстбокс вводится фамилия студента и...

Добавление текстбоксов по нажатию клавиши и удаление по нажатию другой кнопки
Всем доброго времени суток. Хотел попросить помощи в написании следующего кода. Кое что набросал, но не работает при удалении...

5
 Аватар для Effex
17 / 13 / 4
Регистрация: 14.12.2021
Сообщений: 30
08.10.2024, 14:57
Состояние dataSearch нужно связать с input. Повесь onChange на input, и изменяй состояние при изменении значения внутри поля. Ну и value не забудь указать для него, которое будет браться из этого же состояния
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3812 / 1650 / 428
Регистрация: 14.03.2022
Сообщений: 4,118
08.10.2024, 17:22
Цитата Сообщение от Effex Посмотреть сообщение
Состояние dataSearch нужно связать с input.
Он же по кнопке собрался поиск делать... Т.ч. "вязать" с инпутом не обязательно.

Добавлено через 15 минут
Цитата Сообщение от DenCode Посмотреть сообщение
пытаюсь введя в поле input фразу (или часть её), по нажатию button, найти в массиве возможные совпадения
Вот как-то так можно сделать...

Кликните здесь для просмотра всего текста
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
65
66
67
import {useState, useRef} from 'react';
import ReactDOM from 'react-dom/client';
 
const arr = [
  {
      "userId": 1,
      "id": 1,
      "title": "delectus aut autem",
      "completed": false
  },
  {
      "userId": 1,
      "id": 2,
      "title": "quis ut nam facilis et officia qui",
      "completed": false
  },
  {
      "userId": 1,
      "id": 3,
      "title": "fugiat veniam minus",
      "completed": false
  },
  {
      "userId": 1,
      "id": 4,
      "title": "et porro tempora",
      "completed": true
  },
  {
      "userId": 1,
      "id": 5,
      "title": "laboriosam mollitia et enim quasi adipisci quia provident illum",
      "completed": false
  }
]
const App = _ => {
  const [todos, setTodos] = useState(arr);
  const [dataSearch, setDataSearch] = useState('');
  const ri = useRef()
  const filteredTodos = todos.filter((obj, index, array) => {
    return obj.title.toLowerCase().includes(dataSearch);
  });
  const act = e => {
    e.preventDefault()
    setDataSearch(ri.current.value)
  }
  return <main>
    <div class='inputWithButton'>
      <form onSubmit={act}>
        <input ref={ri} type="text" placeholder="Поиск..." />
        <button>Искать</button>
      </form>
    </div>
    <div>
      <h3>Найдено:</h3>
      {filteredTodos.map(({ id, title }) => (
          <div key={id}>
          {id} - {title}
          </div>
      ))}
    </div>
  </main>
}
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <App />
);
0
 Аватар для Effex
17 / 13 / 4
Регистрация: 14.12.2021
Сообщений: 30
09.10.2024, 06:19
Цитата Сообщение от krvsa Посмотреть сообщение
Он же по кнопке собрался поиск делать... Т.ч. "вязать" с инпутом не обязательно.
Ну вообще да, согласен
0
0 / 0 / 0
Регистрация: 01.07.2024
Сообщений: 12
09.10.2024, 12:07  [ТС]
Цитата Сообщение от krvsa Посмотреть сообщение
Вот как-то так можно сделать...
К сожалению не сработало.
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3812 / 1650 / 428
Регистрация: 14.03.2022
Сообщений: 4,118
09.10.2024, 12:29
Цитата Сообщение от DenCode Посмотреть сообщение
К сожалению не сработало.
Я выложил рабочий пример.
Т.ч. хочу знать что ты потом с этим делаешь...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.10.2024, 12:29
Помогаю со студенческими работами здесь

Разбить строку на слова по нажатию первой кнопки, отсортировать список слов по нажатию второй
Разбить строку, введённую в первую ячейку первого столбца активного листа, на слова, и вывести их в ячейки первого столбца, начиная со...

Нарисовать домик по нажатию кнопки, и звезду по нажатию на форме
Нарисовать домик по нажатию кнопки и звезду по нажатию на форме

Прорисовка в окне по нажатию кнопки(обработчик кнопки) MFC
Сообсвтенно вот какая пробелма. Создал кнопку, в ее обработчике написал, что по 2-ому нажатию левой кнопки, переменной bool drawing...

По нажатию кнопки нужно, чтобы появлялось 3-4 кнопки
,и по нажатию на одну из них создавалось новое окно в котором будет информация указанная на кнопке. Вроде всё понимаю но когда по нажатию...

Изменить цвет кнопки (button) по нажатию кнопки
Здравствуйте, подскажите, пожалуйста, как сделать что когда нажимаешь на копку меняется цвет другой кнопки button5.Click += new...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
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
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru