在选项卡上单击调用jQuery搜索

时间:2012-03-24 10:52:10

标签: javascript jquery html

我有一个jQuery搜索脚本,它使用标签让用户定义他们想要使用的搜索类型。但是,当用户搜索某些内容然后选择新的搜索类型(点击标签页)时,他们必须转到文本框并按Enter键再次提交查询。

我想在用户点击他们选择的标签时调用搜索,而无需重新提交查询。我该怎么做?我希望你能理解我想要描述的内容。

我目前的jQuery代码是:

$(document).ready(function(){
    $("[id^=t_]").click(function(){
        t=this.id.replace("t_","");
        $("[id^=t_]").removeClass("s");
        $("#t_"+t).addClass("s");
        return false
    });
    $("#t_search").click();
    $("form").submit(function(event){
        event.preventDefault();
        if($("#s").val().length>0){
            q=$("#s").val();
            $.ajax({
                type:"GET",
                url:""+t+".php?q="+q,
                dataType:"html",
                success:function(c){
                    $("#r").html(c);
                    $("#r").show()
                }
            });
        }
    });
});

我目前的HTML代码是:

<div id="n">
<a href="/" id="t_search" class="s">All</a>
<a href="/images" id="t_images">Images</a>
<a href="/videos" id="t_videos">Videos</a>
<a href="/news" id="t_news">News</a>
</div>

<form action="search" method="get">
<input type="text" id="s" name="q" maxlength="2048" autocomplete="off">
</form>

<div id="r"></div>

2 个答案:

答案 0 :(得分:0)

更改标签时提交表单:

$("[id^=t_]").click(function(){
    t=this.id.replace("t_","");
    $("[id^=t_]").removeClass("s");
    $("#t_"+t).addClass("s");
    if ($("#s").val()!="") {  // only when there's a search term
        $("form").submit();
    }
    return false
});

答案 1 :(得分:0)

尝试这样的事情......

你已经完成了一半的任务。

$(document).ready(function(){
    $("[id^=t_]").click(function(){
        t=this.id.replace("t_","");
        $("[id^=t_]").removeClass("s");
        $("#t_"+t).addClass("s");
        q=$("#s").val();
        if($("#s").val().length>0){
            q=$("#s").val();
            $.ajax({
                type:"GET",
                url:""+t+".php?q="+q,
                dataType:"html",
                success:function(c){
                    $("#r").html(c);
                    $("#r").show()
                }
            });
        }
        return false
    });
});