如何检查输入字段是否清晰?

时间:2016-04-21 16:00:03

标签: javascript jquery

我只想在我的输入字段处于焦点时发送一个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>

但它没有用。有什么不对吗?

8 个答案:

答案 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

Live demo

答案 3 :(得分:2)

以下是一个显示几个不同选项的示例:

CodePen Example

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 */
}