Ниже приведен код
(function(window){
var form = document.getElementById('form_element'),
form2 = document.getElementById('form_element2'),
container = document.getElementById('container');
window.addEventListener('mouseup', getAlert);
function getAlert(event) {
if(event.target === form) {
alert('I clicked on a form');
}
}
form2.addEventListener('click', function() {
container.innerHTML = '<h1>I am however working</h1>';
});
})(window);
#container {
height:400px;
width:400px;
background:red;
}
#form_element {
display:inline-block;
}
<form action="" id="form_element">
<input type="text" placeholder="Enter here..."/>
</form>
<form action="" id="form_element2">
<input type="text" placeholder="Enter here..."/>
</form>
<div id="container">
<h2>Something goes here</h2>
</div>
Не могли бы вы помочь мне с этим, с некоторым объяснением? Различия в jquery-селекторе?
Я застрял в таких маленьких ситуациях. Не могли бы вы помочь мне разобраться.
Спасибо
Проблема в том, что target
когда mouse goes up
является input element
а не form
Вот несколько способов решения вашей проблемы
Проверьте, является ли target
input element
window.addEventListener("mouseUp", getAlert);
function getAlert(event) {
if (event.target === form.firstElementChild) {
alert('I clicked on a form');
}
}
Добавьте listener
в form
чтобы не нужно было ничего проверять
form.addEventListener("mouseUp", getAlert);
function getAlert(event) {
alert('I clicked on a form');
}
Проверьте, является ли target
form
или если target
является element
form
window.addEventListener("mouseUp", getAlert);
function getAlert(event) {
if (event.target === form || form.contains(event.target)) {
alert('I clicked on a form');
}
}
Используйте CSS
для добавления некоторого padding
к form
чтобы у вас было свободное пространство, чтобы щелкнуть form
без нажатия на input
#form_element {
padding: 20px;
}
Используйте CSS
чтобы сделать input element
"невидимым" для мыши
#form_element>input {
pointer-events: none;
}