如何根据下拉列表是否包含选项来显示标签?

时间:2009-05-11 17:25:08

标签: jquery select

我有一个下拉列表,该列表通过外部公司提供的Javascript函数填充。它基本上检查输入是否是有效的邮政编码类型,然后将可能的地址返回到下拉列表中。

如果下拉列表中有一些选项,即一些地址已被找到并填充到选择中,我就不知道如何显示一条消息。

我试过这个:

$(function() {
  function showmsg() {
    if ($("#selectaddress").length > 1)
      $('#buttonhint2').slideDown('normal');
  }
  $("#btnFind").click(showmsg)
});

但它没有做任何事情。我对这一切都是一个完全新手,所以我不确定我是不是正在吠叫正确的树。任何帮助非常感谢。

2 个答案:

答案 0 :(得分:2)

好吧,你可能要等到外部函数实际运行其代码。我对这个功能一无所知或在哪里运行,所以我无法帮助你。如果它为你提供了一个回调函数的方法,只需将它传递给你的'showmsg'函数(并在Jimmie提到的文档就绪语句之外写)。

如果它不允许回调函数参数并且你知道它在页面加载时运行,你可以延迟你的showmsg函数,比如500毫秒或者其他东西..这可能会给第一个脚本留出足够的时间运行(但是,你想要玩这个,直到你做对了)。如果第一个函数使用AJAX来检索数据,那么您可能需要重新考虑使用该函数,或者只是修改此第三方函数(如果许可证允许)以添加回调功能。

您可以将脚本设置为延迟:

$(function() {
    setTimeout(function() {
        if ($("#selectaddress option").length > 0) {    
            $('#buttonhint2').slideDown('normal');  
        }
    },500);
});

此外,您还需要检查选择框中的选项的数量,而不是页面上的选择框数量。您之前至少检查了两个选项,我提供的脚本至少检查了一个。

答案 1 :(得分:1)

尝试将您的函数showmsg()移到文档之外:

function showmsg() {
  if ($("#selectaddress").length > 1)      
    $('#buttonhint2').slideDown('normal');  
} 
$(function() {   
   $("#btnFind").click(showmsg)
});