Вы должны быть осторожны при регистрации этих событий в обработчике click
.Вещи могут быстро запутаться, если вы не отмените их регистрацию.
Вам понадобится состояние для отслеживания вещей, поэтому я создал eventFlags
:
let button = document.querySelector('button');
let select = document.querySelector('select');
let input = document.querySelector('input');
let eventFlags = {
clicked: false,
changed: false,
blurred: false
};
button.onclick = function() {
console.log('clicked');
eventFlags.clicked = true;
return false;
};
select.onchange = function(event) {
console.log('changed');
eventFlags.changed = event.target.value;
doCheck();
};
input.onblur = function(event) {
console.log('blurred');
eventFlags.blurred = event.target.value;
doCheck();
};
function doCheck() {
if (eventFlags.clicked &&
eventFlags.changed &&
eventFlags.blurred) {
alert(`ready: ${eventFlags.changed} ${eventFlags.blurred}`);
}
}
<form>
<tbody>
<tr>
<td>button</td>
<td>
<button>click</button>
</td>
</tr>
<tr>
<td>select</td>
<td>
<select>
<option value="a">A</option>
<option value="b">B</option>
</select>
</td>
</tr>
<tr>
<td>input</td>
<td><input type="text"></td>
</tr>
</tbody>
</form>