当从另一个<input />模糊时,jQuery检测到<input />是焦点

时间:2015-05-08 14:15:34

标签: javascript jquery html

我的页面上有两个输入元素,我想检测何时  #aa blur,是#bb focused

<小时/> 以下是我到目前为止:

HTML:

<input type="text" id="aa" name="aa">
<input type="text" id="bb" name="bb">

JQuery的:

$('#aa').blur(function () {
    console.log($('#bb').is(':focus'));
});

<小时/> 虽然它在理论上有效,但输出总是返回false

我知道这是因为#aa的模糊事件总是发生在#bb的焦点事件之前。

感谢任何帮助

2 个答案:

答案 0 :(得分:3)

只需使用带有0作为偏移量的setTimeout()来将调用延迟到下一个周期。

&#13;
&#13;
$('#aa').blur(function () {
  setTimeout(function(){
    console.log($('#bb').is(':focus'));
    },0);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="aa" name="aa">
<input type="text" id="bb" name="bb">
&#13;
&#13;
&#13;

答案 1 :(得分:0)

如何使用全局变量,在blur #aafocus时更新其值,然后在#bb var i = 0; $('#aa').blur(function () { i=1; }); $('input:text').not('#aa').blur(function () {//reset when other textboxes are blurred i=0; }); $('#bb').focus(function () { if(i==1){ //it worked! } }); 事件中使用它:

[Route("")]
public HttpResponseMessage GetFile()
{
    var result = new HttpResponseMessage(HttpStatusCode.OK);
    try
    {
        var file = XLGeneration.XLGeneration.getXLFileExigence();
        result.Content = new StreamContent(file);
        result.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream");
        var value = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
        value.FileName = "Whatever your filename is";
        result.Content.Headers.ContentDisposition = value;
    }
    catch (Exception ex)
    {
        // log your exception details here
        result = new HttpResponseMessage(HttpStatusCode.InternalServerError);
    }
    return result;
}