为什么我的按钮失去焦点?

时间:2010-10-14 16:25:25

标签: javascript jquery html setfocus

这就是我想要发生的事情..当用户点击'enter'时,'SearchForItems()'应该触发。发生的事情是另一个控件,在页面上有“其他按钮”,只要其他任何元素被选中,或者在onkeyup之后,页面就会将焦点返回给它。

我必须强行关注页面加载时的“搜索按钮”,但是在按下任何时间后按下“其他按钮”会被触发。 “其他按钮”没有分配标签索引,是页面默认按钮

我不确定我是否做得很好解释这一点。基本上我想知道为什么焦点被转移以及我如何强制“搜索按钮”在任何时候按下时触发。

这是我网页上的一个条目,我试图强制触发“搜索按钮”:

<td><input type="text" onkeydown="CheckForEnterKey(event)" id="AcceptedDate1" maxlength="7"  style="width:121px;" value="<%=DateTime.Now.AddMonths(-3).ToString("MM/yyyy")%>"/>&nbsp;</td>

这是我的jquery文件的一部分,我也是

$('#AcceptedDate1').keypress(function(e) { if (e.keyCode == 13 || e.which == 13) $('#SearchAcceptedLotsButton').click(); });

CheckForEnterKey功能

function CheckForEnterKey(e)
    {
        var keycode;
        if(e.which)
        {
            keycode = e.which;
        }
        else
        {
            keycode = e.keyCode;
        }

        if(keycode == 13)
        {
            $('#SearchAcceptedLotsButton').click();//tried SearchForItems() also
        }
    }

修改

我刚将这个添加到我的页面,它似乎工作,我把它添加到主要的div,把所有东西放在一起。我现在需要做的是找出按下输入的位置,这样每次在我的页面主要部分按下输入时都会取消输入。任何想法,我的页面上有很多元素?

function checkKey(e)
    {
        if(e.keyCode == 13 || e.which == 13)
        {
            e.returnValue = false;
            e.cancel = true;
        }
    }

3 个答案:

答案 0 :(得分:0)

我不确定你为什么遇到问题。但我可以提供我的onKeyDown代码来按Enter:

if (event.which || event.keyCode){if ((event.which == 13) || (event.keyCode == 13)) { #DO JS HERE # }}

所以我这样使用它:

<input type="text" onKeyDown="if (event.which || event.keyCode){if ((event.which == 13) || (event.keyCode == 13)) { alert('You pressed enter!'); }}">

答案 1 :(得分:0)

在上面的代码中,只要按下enter键,就可以触发id="SearchAcceptedLotsButton",点击如下:

    if(keycode == 13)
    {
        $('#SearchAcceptedLotsButton').trigger('click');
    }

答案 2 :(得分:0)

这就是我解决问题的方法:

我添加了这个功能..

function checkKey(e)
    {
        if(e.keyCode == 13 || e.which == 13)
        {
            e.returnValue = false;
            e.cancel = true;
            SearchAcceptedLots();
        }
    }

在包含页面上所有内容的最顶层的div中,我添加了这个:

<div id="ItemPanel" onkeydown="checkKey(event)">

这会捕获表单中按下的每个输入,取消默认按钮行为并调用所需的功能。