Проверка на корретность ввода

This commit is contained in:
romai 2024-12-19 04:00:04 +04:00
parent c0a31edd60
commit 4f2a40631c

View File

@ -8,12 +8,37 @@ const SearchBar = () => {
const [query, setQuery] = useState(''); // Поисковый запрос const [query, setQuery] = useState(''); // Поисковый запрос
const [results, setResults] = useState([]); // Результаты поиска const [results, setResults] = useState([]); // Результаты поиска
const [selectedStreet, setSelectedStreet] = useState(null); // Выбранная улица const [selectedStreet, setSelectedStreet] = useState(null); // Выбранная улица
const [error, setError] = useState(''); // Сообщение об ошибке
const handleInputChange = (e) => {
const value = e.target.value;
// Проверка на наличие цифр
if (/\d/.test(value)) {
setError('Ввод цифр запрещен. Пожалуйста, введите название улицы.');
} else {
setError('');
}
setQuery(value);
};
const handleSearch = async (e) => { const handleSearch = async (e) => {
e.preventDefault(); e.preventDefault();
const data = await searchStreet(query);
setResults(data); // Установить результаты поиска // Проверка перед выполнением поиска
setSelectedStreet(null); // Сбросить выбранный адрес if (error) {
alert('Исправьте ошибки перед поиском.');
return;
}
try {
const data = await searchStreet(query);
setResults(data);
setSelectedStreet(null);
} catch (err) {
setError('Ошибка поиска. Попробуйте снова.');
}
}; };
return ( return (
@ -21,29 +46,32 @@ const SearchBar = () => {
<form className="form-container d-flex mb-4" onSubmit={handleSearch}> <form className="form-container d-flex mb-4" onSubmit={handleSearch}>
<input <input
type="text" type="text"
className="form-control" className={`form-control ${error ? 'is-invalid' : ''}`}
placeholder="Введите название улицы" placeholder="Введите название улицы"
value={query} value={query}
onChange={(e) => setQuery(e.target.value)} onChange={handleInputChange}
aria-label="Search" aria-label="Search"
/> />
<button className="btn btn-outline-success" type="submit"> <button className="btn btn-outline-success" type="submit" disabled={!!error}>
Поиск Поиск
</button> </button>
</form> </form>
{/* Вывод сообщения об ошибке */}
{error && <div className="invalid-feedback d-block">{error}</div>}
{selectedStreet ? ( {selectedStreet ? (
<div className="table-container"> <div className="table-container">
<h2>Информация об адресе</h2> <h2>Информация об адресе</h2>
<SearchResults <SearchResults
selectedStreet={selectedStreet} selectedStreet={selectedStreet}
onBack={() => setSelectedStreet(null)} onBack={() => setSelectedStreet(null)}
/> />
</div> </div>
) : ( ) : (
<SearchResults <SearchResults
results={results} results={results}
onSelect={(street) => setSelectedStreet(street)} onSelect={(street) => setSelectedStreet(street)}
/> />
)} )}
</div> </div>