seregazolotaryow64
@seregazolotaryow64
IT Специалист и самоучка

Почему JQuery-событие keyup блокирует возможность ввода в поле input внутри формы?

Доброго утра!

Перед вами код формы:
<form className="add-portal-user" action="">
					<div data-cont="header">
					  <h3>Input user firstname and surname:</h3>
					  <ul>
						<li htmlFor="firstname">
						  <input type="text" name="firstname" id="firstname" placeholder="Jonh"/>
						</li>
						<li htmlFor="surname">
						  <input type="text" name="surname" id="surname" placeholder="Jonhson"/>
						</li>
					  </ul>
					</div>
					<div data-cont="content">
					  <h3>Input account data:</h3>
					  <ul>
						<li htmlFor="login">
						  <input type="text" name="login" id="login" placeholder="Login"/>
						</li>
						<li htmlFor="password">
						  <input type="password" name="password" id="password" placeholder="Password"/>
						</li>
						<li id="son">
						  <h4>Input contact data:</h4>
						  <ul>
							<li htmlFor="email"><input type="email" name="email" id="email" placeholder="EMail" /></li>
							<li htmlFor="country">
							  <select name="country" id="country">
								<option>Select user country</option>
								<RegionList />
							  </select>
							</li>
						  </ul>
						</li>
					  </ul>
					</div>
					<div data-cont="footer">
					  <label htmlFor="role">Select user role:</label>
					  <select name="role" id="role">
						<option value="admin">Portal administrator</option>
						<option value="moderator">Portal moderator</option>
						<option value="dev">Portal developer</option>
					  </select>
					  <button type="submit" className="add-but">Add admin portal user</button>
					</div>
</form>


И ещё JS+JQuery-код обработчиков элементов управления:
$('.add-portal-user > div ul li input').keyup(function(){
	sessionStorage.setItem('query-' + this.name, this.value);
});
$('.add-portal-user > div select, .add-portal-user > div ul li select').change(function(){
	sessionStorage.setItem('query-' + this.name, this.value);
});


И заметил я проблему, если к полю input привязано событие keyup и при нажатии на него браузер мне не даёт дальше вводить его содержимое? Что может быть не так и как разблокировать возможность ввода?

Заранее спасибо!
  • Вопрос задан
  • 61 просмотр
Пригласить эксперта
Ответы на вопрос 1
Liatano
@Liatano
Почему блокирует - не скажу,возможно проблема где-то еще. Но:
во-первых лучше использовать событие input ( читаем тут https://learn.javascript.ru/events-change-input )
во-вторых ,что за "className" у формы? наверно опечатка
в-третьих, не надо делать такие жуткие выборки, в чем принципиальность того,что внутри класса непосредственно находится див, внутри которого лежит список,внутри которого элемент списка и там уже инпут. Это очень плохая практика как для js так и для css. Используйте классы, делайте вложенность в 2-3 уровня, 4-5 - это для дикой конкретизации в очень узком месте.

в итоге должно получиться что-то типа
$('.add-portal-user').on('input', 'input', function(){
  sessionStorage.setItem('query-' + this.name, this.value);
});
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы