如果内容处于活动状态,则在页面重新加载后取消选择jQuery中的文本框

时间:2011-07-21 22:06:07

标签: javascript jquery html

我有一个Google Instant风格的jQuery搜索脚本,用于查询PHP文件,然后将结果解析为HTML div。如果没有活动的查询,则会自动选择文本框,但是当查询处于活动状态时,我希望不会自动选择该查询。我知道使用.blur();函数可以做到这一点,但是当查询处于活动状态且页面已重新加载时,如何才能使用.blur();函数?我希望每个人都能理解我的问题。

我的jQuery代码是:

$(document).ready(function () {
    $('[id^=type_]').click(function () {
        type = this.id.replace('type_', '');
        $('[id^=type_]').removeClass('selected');
        $('#type_' + type).addClass('selected');
        return false;
    });
    $('#query').focus();
    if (window.location.hash != "") {
        var full = window.location.hash.replace('#', '');
        var queryType = full.substring(0, full.indexOf("/"));
        $('#type_' + queryType).click();
    } else {
        $('#type_search').click();
    }
    $('#query').keyup(function () {
        var query = $(this).val();
        var url = '/' + type + '/' + query + '/';
        window.location.hash = '' + type + '/' + query + '/';
        document.title = $(this).val() + ' - My Search Script';
        $('#results').show();
        if (query == '') {
            window.location.hash = '';
            document.title = 'My Search Script';
            $('#results').hide();
        }
        $.ajax({
            type: 'GET',
            url: url,
            dataType: 'html',
            success: function (results) {
                $('#results').html(results);
            }
        });
    });
    if (window.location.hash.indexOf('#' + type + '/') == 0) {
        query = window.location.hash.replace('#' + type + '/', '').replace('/', '');
        $('#query').val(decodeURIComponent(query)).keyup();
    }
});

2 个答案:

答案 0 :(得分:1)

在查看来源后,我发现我的怀疑是正确的。因为页面上只有一个文本框,所以一旦模糊了查询,它就会回到它。您可以在html页面上创建另一个输入节点,例如

<input type="text" style="display:none" id="invisible">

然后使用此代码

if ($('#query').val().length) {
    $('#invisible').focus();
}

那应该让你到那里:)

答案 1 :(得分:0)

AHHA!我明白你的意思了。您可以使用JQuery中的.val()函数检查文本框中是否包含任何内容。假设'#query'是文本框,您可以将该部分更改为

if($('#query').val().length == 0)
$('#query').focus();