I want to send an Ajax request only when my input field is in focus (i.e., cursor is inside it. Here's my code:
function anewFunc() {
$(document).ready(function(){
var chatattr = $(".chatwindow").css("visibility");
var chattitle = $("#hideid").text();
if (chatattr == "visible") {
if (MY INPUT FIELD HAS FOCUS) {
$.ajax({
url: 'seen1.php',
type: 'post',
data: "ctitle="+chattitle,
success: function(result9) {},
error: function() {}
});
}
} else {
$.post("seendefault.php");
}
});
}
$(document).ready(function(){
var zzz = setInterval(anewFunc, 2000);
});
Now I don't know how to check every time the input has focus or not. Is there any jQuery solution for it?
EDIT: A few answers has suggested me :focus. So I tried this for trial:
$(document).ready(function(){
if($("#msgtypeid").is(":focus")){
alert("Hello");
}
});
HTML:
<form id="chatform" name="form4" method="post" required enctype="multipart/form-data">
<input id="msgtypeid" type="text" name="cmessage" autocomplete="off" autofocus/>
</form>
But it's not working. Is there something wrong?
I think you need this type of a checking:
var hasFocus = $('#idOfTheInputElement').is(':focus');
if(hasFocus){
//logic here
}
Add a focus
-event handler to your input
element, and your callback function will be called every time the element gets focused.
document.addEventListener('DOMContentLoaded', function() {
document.getElementById('example').addEventListener('focus', function() {
alert('The input is focused.');
});
});
Live demo
With Jquery 1.6+ :
$("..").is(":focus")
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