仅在按Tab键时调用onBlur事件

时间:2012-08-09 10:41:49

标签: javascript asp.net

我有一个文本框,只有当按下Tab键才能从文本框中删除焦点时,我才想在其上执行onBlur事件。

我如何通过javascript执行此操作?

感谢任何帮助..

3 个答案:

答案 0 :(得分:4)

在浏览器中,当控件具有焦点时按Tab键会将其移动到Tab键顺序中的下一个元素,导致当前元素失去焦点并发送模糊事件。

因此,您只需测试按Tab键并根据该功能调用您的功能,例如

<script type="text/javascript">

function showKey(e) {
  return e.which || e.keyCode;
}

</script>
<form>
  <input type="text" onkeydown="this.form.msg.value = showKey(event);">
  <input type="text" name="msg">
</form>

以上显示tab键的值为9,因此您可以执行以下操作:

if ((e.which || e.keyCode) == 9) {
  // tab key was pressed, do stuff
}

请注意,虽然大多数浏览器支持e.which,但其他浏览器支持e.keyCode。

修改

根据您的评论,以下显示当控件失去焦点时,隐藏字段的值已设置:

  <input type="text" onkeydown="this.form.msg.value = showKey(event);
  (event);" onblur="alert(this.form.msg.value);">

答案 1 :(得分:1)

`enter code here`

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
    $(document).ready(function () {
        $("#theDiv input").bind("blur", function () {
            setTimeout(function () {
                var isOut = true;
                $("#theDiv input").each(function () {
                    if (this == document.activeElement) isOut = false;
                });
                if (isOut) {
                    // YOUR CODE HERE
                    alert("I am called");
                }
            }, 10);
        });
    });
</script>
<!-- ... -->
<div id="theDiv">
    <input type="text" value="Inside DIV 1" />
    <input type="text" value="Inside DIV 2" />
    <input type="text" value="Inside DIV 3" />
</div>
<input type="text" value="Outside DIV" />

答案 2 :(得分:-1)

<script type="text/javascript">

function callfunc() {
 alert("Hello");
}

</script>


<form>
  <input type="text" onblur="callfunc();">
</form>