0

在我的搜索网页上,我有一个简单的 JQuery 脚本,如果输入框中有文本,它会启用提交按钮。

我正在使用该keyup事件来检测输入,但是我不确定如何处理用户可能单击输入字段并向下滚动到先前搜索过的查询的事件。

没有按键事件能够检测到这个动作,我该怎么办?

jQuery代码

/* if search box has text then enable submit button otherwise disable it */
$(".searchContainer input[name=query]").keyup(function(){
    if($(".searchContainer input[name=query]").val().length > 0){
        $(".searchContainer input[type=submit]").attr("disabled", false);
    }
    else{
        $(".searchContainer input[type=submit]").attr("disabled", true);
    }
});

HTML 标记

<form method="post" action="/results.php">
   <input type="text" name="query" />
   <input type="submit" value="Search" disabled="disabled" />
</form>

编辑

在此处输入图像描述

我基本上想处理自动完成事件,我对禁用该功能不感兴趣,我想知道如何检测是否选择了自动完成选项。

4

2 回答 2

0

Try setting autocomplete="off" in your input field, like so:

<form method="post" action="/results.php">
   <input type="text" autocomplete="off" name="query" />
   <input type="submit" value="Search" disabled="disabled" />
</form>
于 2012-09-20T22:47:39.413 回答
0

您还可以使用 change() jQuery 事件而不是 keyup,它会在输入的任何更改时触发,而不仅仅是键入:

$(".searchContainer input[name=query]").change(function(){
   if($(".searchContainer input[name=query]").val().length > 0){
       $(".searchContainer input[type=submit]").attr("disabled", false);
   }
   else{
       $(".searchContainer input[type=submit]").attr("disabled", true);
   }

});

见: http ://api.jquery.com/change/

编辑: 由于 change() 事件似乎没有为你做,你可以尝试一种完全不同的方法:

$(".searchContainer input[type=submit]").click(function(){
    if ( $(".searchContainer input[name=query]").val().length == 0 ) {
        return false;
    }
});
于 2012-09-20T22:52:24.957 回答