Binding a click event on the item list, the box keeps disappearing. Any idea why click event not working on item-list > div.
The idea is to fetch the text(from item-list) that is being clicked and put it in the input field ?
(function() {
$(".input-msg").focus(function() {
$(".item-list").css('display', 'block');
$(".item-list div").click(function() {
var inputValue = $('.input-msg');
var data = $(this).text();
inputValue.val(data);
});
}).blur(function() {
$(".item-list").css('display', 'none');
});
})();
.input-wrapper {
width: 300px;
}
.item-list {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="input-wrapper">
<input type="text" class="input-msg" placeholder="click me">
<!-- input msg -->
<div class="item-list">
<div>This is item one</div>
<div>This is item one</div>
<div>This is item one</div>
<div>This is item one</div>
</div>
</div>
I think I got your Problem:-
1.remove blur code. (because it's hiding div immediately when focus out from the input-box)
2.Put click outside of focus. (register listener only one-time which is enough)
3.Inside click do the hide code. (if you want to hide div after clicking on it's text div's)
Working snippet:-
(function() {
$(".input-msg").focus(function() {
$(".item-list").css('display', 'block');
});
$(".item-list div").click(function() {
var inputValue = $('.input-msg');
var data = $(this).text();
inputValue.val(data);
$('.item-list').hide();
});
})();
$(document).mouseup(function(e) {
if (!$(e.target).is('.item-list') && !$(e.target).is('.input-msg')) {
$('.item-list').hide(1000);
}
});
.input-wrapper {
width: 300px;
}
.item-list {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="input-wrapper">
<input type="text" class="input-msg" placeholder="click me">
<!-- input msg -->
<div class="item-list">
<div>This is item one</div>
<div>This is item Two</div>
<div>This is item Three</div>
<div>This is item Four</div>
</div>
</div><br>
Take a look at this.
(function() {
$(".item-list div").click(function() {
var inputValue = $('.input-msg');
var data = $(this).text();
inputValue.val(data);
$('.item-list').fadeOut('fast');
});
$(".input-msg").focus(function() {
$(".item-list").fadeIn('fast');
})
$(document).mouseup(function(e) {
if (!$(e.target).is('.item-list') && !$(e.target).is('.input-msg')) {
$('.item-list').fadeOut('fast');
}
});
})();
.input-wrapper {
width: 300px;
}
.item-list {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="input-wrapper">
<input type="text" class="input-msg" placeholder="click me">
<!-- input msg -->
<div class="item-list">
<div>This is item one</div>
<div>This is item two</div>
<div>This is item three</div>
<div>This is item four</div>
</div>
</div>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With