我只想在我的输入字段处于焦点时发送一个Ajax请求(即光标位于其中。这是我的代码:
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);
});
现在,我不知道每次输入是否有焦点时都要检查。是否有任何jQuery解决方案?
编辑:一些答案表明我:专注。所以我尝试了这个试用版:
$(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>
但它没有用。有什么不对吗?
答案 0 :(得分:3)
使用Jquery 1.6+:
$("..").is(":focus")
答案 1 :(得分:3)
我认为你需要这种类型的检查:
var hasFocus = $('#idOfTheInputElement').is(':focus');
if(hasFocus){
//logic here
}
答案 2 :(得分:3)
向o.upvote = function(post){
return $http.put('/posts/' + post._id + '/upvote', null, {
headers: {Authorization: 'Bearer '+auth.getToken()}
}).success(function(data){
post.upvotes += 1;
angular.element(document.getElementById(post._id + 'upvote' ))[0].disabled = true;
});
};
元素添加focus
- 事件处理程序,每次元素聚焦时都会调用回调函数。
input
答案 3 :(得分:2)
以下是一个显示几个不同选项的示例:
HTML
<input type='text' class="is-focus">
<input type="text" class="isActiveElement">
<input type="text" class="focused">
JS
$('input').on('click', function() {
if ($('.is-focus').is(':focus')) {
alert('focused')
}
if ($(document.activeElement).is('.isActiveElement')) {
alert('isActiveAlement')
}
if($('.focused:focus').length) {
alert(':focus')
}
});
答案 4 :(得分:2)
首先,从您的函数中取出$(document).ready。你只需要调用一次,而不是间隔。
var myInterval= null; // in case you decide to clear it later.
function anewFunc() {
var chatattr = $(".chatwindow").css("visibility");
var chattitle = $("#hideid").text();
var chatinput = $("#inputid");
var chatText = chatinput.val();
if (chatattr == "visible") {
if (chatinput.is(":focus")) {
$.ajax({
url: 'seen1.php',
type: 'post',
// if you're posting data, it should be as a json object
data: {"ctitle" : chattitle, "text":chatText},
success: function(result9) {},
error: function() {}
});
}
} else {
$.post("seendefault.php");
}
}
$(document).ready(function(){
myInterval = setInterval(anewFunc, 2000);
});
此更改调用您的就绪函数ONCE,设置间隔,并在聚焦时获取输入字段的值。
答案 5 :(得分:0)
您可以使用&#34; is&#34;:
if ($("input").is(":focus")) {
....
...
}
答案 6 :(得分:0)
尝试使用奇数方法
var i = 0;
$('.chatwindow').on('focus blur', function () {
i += 1;
var tog = function (someNum) {
if ((someNum % 2) === 1) {
return true;
} else {
return false;
}
};
if (tog(i) === true) {
// make ajax function
} else {
// do something else
}
});
答案 7 :(得分:-1)
您不必键入一堆脚本,只需添加一些简单的CSS:
#yourInputOrWhatever:focus {
/* Your New Code Here */
}