如何在鼠标悬停事件中获取当前文本光标位置?

时间:2012-09-20 19:04:29

标签: javascript jquery javascript-events cursor hover

我正在创建一个隐藏的联系表单,当鼠标位于元素上方时会出现。这很简单,我通过这样做实现了它:

$(document).ready(function(){   
  $(function (){
    $("#contact_1").hover(
      function(){ $(this).stop(true,false).animate({right:  0}, 500); },
      function(){ $(this).stop(true,false).animate({right: -218}, 500); });
  });
});

现在的问题是,当用户查看输入元素或textarea并开始编写他们的详细信息时,他们可能会将鼠标移出容器(很可能会这样)。

在这种情况下如何防止表单隐藏?

我想在“悬停”函数中添加一些条件函数(if / else),但如何获取当前文本光标位置?

联系表单(#contact_1)包含ID中的4个元素:#cf_name,#cf_email,#cffphone,#cf_text

请注意:我不想让用户不必点击“显示/隐藏”按钮

* mabye这是一个简单的查询,但我无法在任何地方找到明确的答案。

感谢

------------------------------

SOLUTION:

  • 感谢Diodeus的帮助,我设法解决了这个问题:

每个输入都有onfocus / onblur动作:

<input type="text" id="cf_name" class="text" name="name" onfocus="allowcfhide=false;" onblur="allowcfhide=true;" />

悬停脚本已修改:

var allowcfhide=true;
$(document).ready(function(){   
  $(function (){
    $("#contact_1").hover(
      function(){ if (allowcfhide) $(this).stop(true,false).animate({right:  0}, 500); },
      function(){ if (allowcfhide) $(this).stop(true,false).animate({right: -218}, 500); });
  });
});

1 个答案:

答案 0 :(得分:0)

在动画开头有一个标志会导致它返回。当任何输入获得焦点时,设置标志。