Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.04.2018, 21:16
Аспирант
Отправить личное сообщение для SolomonRei Посмотреть профиль Найти все сообщения от SolomonRei
 
Регистрация: 05.04.2018
Сообщений: 77

Кто поможет с выводом ошибки
Нужно,чтобы,если пользователь не ввел имя и фамилию,то выводилось сообщение под обеими полями,если же,он потом исправил,и ввел имя,то имя больше не подчеркивалось красным,а горело только поле фамилия,но у меня почему-то не получается,я проверяю переменную,если пустая то вывожу предупреждение,но до второго if не доходит,потому что я возвращаю return false; Как мне это исправить,чтобы все корректно работало.
Вот код:
<form action = "" method = "post" class = "form_search">
				<div class = "name_form">
					<div id = "lg_err"></div>
					<i><label class = "wrap_name">Имя:</label></i>
					<i><input type = "text" name = "name" placeholder = "Имя ученика" id = "search_name"></i>
				</div>
				<div class = "surname_form">
					<div id = "ps_err"></div>
					<i><label class = "wrap_name">Фамилия:</label></i>
					<i><input type = "text" name = "surname" placeholder = "Фамилия ученика" id = "search_surname"></i>
				</div>
				<div class = "find_form">
					<i><label class = "wrap_name">Найти:</label></i>
					<i><input type = "submit" name = "find" id = "search_button" value = "Найти" onclick = "return SearchHuman()"></i>
				</div>

			</form>

JS
function SearchHuman(){
			var name = document.getElementById('search_name').value;
			var surname = document.getElementById('search_surname').value;

			if(!name && !surname){
				search_name.style.border = '2px solid red';
				document.getElementById('lg_err').innerHTML = '*Введите имя!';

				search_surname.style.border = '2px solid red';
				document.getElementById('ps_err').innerHTML = '*Введите Фамилию!';
				return false;

			}


			if(!surname){
				search_surname.style.border = '2px solid red';
				document.getElementById('ps_err').innerHTML = '*Введите Фамилию!';
                                return false;
				}else{
					search_surname.style.border = 'none';
					ps_err.style.display = 'none';
				}

				
			if(!name){
				search_name.style.border = '2px solid red';
				document.getElementById('lg_err').innerHTML = '*Введите имя!';
                                return false;
				}else{
					search_name.style.border = 'none';
					lg_err.style.display = 'none';
				}
				
			
		}

Последний раз редактировалось SolomonRei, 06.04.2018 в 21:21.
Ответить с цитированием
  #2 (permalink)  
Старый 06.04.2018, 22:18
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

https://codepen.io/anon/pen/JLeYrP?editors=1010
Ответить с цитированием
  #3 (permalink)  
Старый 06.04.2018, 22:29
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

<style>
input {
    border: 1px solid #ddd;
}
</style>

<form action="" method="post" class="form_search" oninput="SearchHuman(this.elements)">
                <div class="name_form">
                    <div id="name_err"></div>
                    <i><label class="wrap_name">Имя:</label></i>
                    <input data-err="Введите имя!" type="text" name="name" placeholder="Имя ученика">
                </div>
                <div class="surname_form">
                    <div id="surname_err"></div>
                    <i><label class="wrap_name">Фамилия:</label></i>
                    <input data-err="Введите Фамилию!" type="text" name="surname" placeholder="Фамилия ученика">
                </div>
                <div class="find_form">
                    <i><label class="wrap_name">Найти:</label></i>
                    <input type="submit" name="find" value="Найти">
                </div>
 
            </form>


<script>
function SearchHuman(elm){
    for(var i=0; i<elm.length-1; i++) {
        if(!elm[i].value.trim()) {
            document.getElementById(elm[i].name+'_err').textContent = elm[i].getAttribute('data-err');
            elm[i].style.borderColor = '#f00';
        } else {
            document.getElementById(elm[i].name+'_err').textContent = '';
            elm[i].style.borderColor = '#ddd';
        } 
    } 
}
</script>


<input type = "submit" name = "find" value = "Найти"> - это расточительство, а поля в тегах I бессмыслица.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Может кто какие замечания сделает или поможет дописать format qwerty-клавиатура Ваши сайты и скрипты 10 22.04.2013 04:54
Прошу помощи скриптеров или кого либо кто поможет :) f00rZik Общие вопросы Javascript 13 05.01.2012 03:42
Нужна помощь Кто розбирается в js и кто поможет переделать его или создать заново Starpomlom Javascript под браузер 10 26.12.2011 14:46
Нужно реализовать таблицу со сроллингом и фиксированными заголовками - кто поможет? kinourl.info jQuery 50 10.11.2011 21:56
Угодить php с выводом ошибки nemo Серверные языки и технологии 31 01.02.2010 16:15