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?
Try to use even odd method
Add a
focus
-event handler to yourinput
element, and your callback function will be called every time the element gets focused.Live demo
With Jquery 1.6+ :
First, take the $(document).ready out of your function. You only need to call it once, not on interval.
This change calls your ready function ONCE, sets the interval, and gets the input field's value when it is focused.
You don't have to type a bunch of scripts, just add some simple css:
You can use "is":