【问题标题】:Scriptaculous Autocompleter wont work in FirefoxScriptaculous 自动完成功能在 Firefox 中不起作用
【发布时间】:2013-05-16 14:40:40
【问题描述】:

我正在开发一个使用 Scriptaculous 自动完成器实现自动完成文本字段的项目。在低于 10 的 Internet Explorer 版本中,系统工作正常,但在 10 版和其他浏览器(如 Firefox 或 Chrome)中,自动完成功能存在缺陷。我已经用原型 1.7 将 Scriptaculous 更新到 1.9,但没有任何改变。

<label for="possibleClient">Verfügbare Klienten</label><br>
            <input type="text" id="possibleClient" class="fill intellisense"><div id="possibleClientUpdate" class="auto-complete"></div>

            <script type="text/javascript" language="javascript" charset="utf-8">
            // <![CDATA[

            function updateClientList(input,listitem) {

                var nodes = document.getElementsByClassName('informal', listitem) || [];
                if(nodes.length>0) label = Element.collectTextNodes(nodes[0], listitem);
                addToList("chosenClients",input.value,label);
                input.value="";
            }

            var ac = new Ajax.Autocompleter('possibleClient','possibleClientUpdate','/data/clients.php',{paramName: 'search',minChars:1, parameters:'projektIDs=<?php echo $projektID ?>&searchnName=true', select:'selectme', afterUpdateElement: updateClientList});
            // ]]>
            </script>               

我不知道。

[更新]

您好坦克,所有的快速答案。有缺陷是什么意思。我正在更新一个较旧的系统,以便为任何浏览器做好准备。有缺陷意味着自动完成功能不起作用。如果我在较新的浏览器中输入任何内容,则不会发生任何事情。当您激活兼容模式时,它可以在 ie 10 中使用。

系统没有使用 json 文件。 /data/clients.php 返回一个

<ul><li></li></ul> 

文字段落。

例如:

<ul><li><span class='informal'>Aicher Jasmin</span> (<span class='selectme'>65</span>)</li><li><span class='informal'>Bader Jacqueline Bernice</span> (<span class='selectme'>77</span>)</li><li><span class='informal'>Freisslich Claudia</span> (<span class='selectme'>78</span>)</li><li><span class='informal'>Goller Sascha</span> (<span class='selectme'>64</span>)</li><li><span class='informal'>Hebein Ilse</span> (<span class='selectme'>75</span>)</li><li><span class='informal'>Hohenwarter Berndt</span> (<span class='selectme'>60</span>)</li><li><span class='informal'>Kanz Bernhard</span> (<span class='selectme'>69</span>)</li><li><span class='informal'>Kohlmaier Angelika</span> (<span class='selectme'>68</span>)</li><li><span class='informal'>Konic Isabella</span> (<span class='selectme'>71</span>)</li><li><span class='informal'>Kosche Karl-Heinz</span> (<span class='selectme'>63</span>)</li><li><span class='informal'>Kreilitsch Jutta</span> (<span class='selectme'>70</span>)</li><li><span class='informal'>Kribitsch Bernhard</span> (<span class='selectme'>61</span>)</li><li><span class='informal'>Lackner Ermelinde</span> (<span class='selectme'>79</span>)</li><li><span class='informal'>M&ouml;sslacher Wolfgang</span> (<span class='selectme'>67</span>)</li><li><span class='informal'>M&uuml;ller Hans</span> (<span class='selectme'>54</span>)</li></ul>

我也不认为数据源是问题所在,因为它适用于旧版浏览器。

如果我在 Firefox 中启动开发者控制台,然后输入:

我看到该过程被调用并且脚本正在从 [07:35:47.367] POST https://myserver.at/data/clients.php [HTTP/1.1 200 OK 45ms] 获取数据

但我没有看到带有自动完成建议的下拉 div。 它可能是一个 css Probleme 吗? 这是自动完成的 css 文件:

div.auto-complete {
  position:absolute;
  width:250px;
  background-color:white;
  border:1px solid #888;
  margin:1px 1px 0 1px;
  padding:0px;
}
div.auto-complete ul {
  list-style-type: none;
  margin:0px;
  padding:0px;
}
div.auto-complete ul li.selected { background-color: #ffb;}
div.auto-complete ul li {
  list-style-type: none;
  display:block;
  margin:0;
  padding:2px;
  height:22px;
  cursor:pointer;
}

【问题讨论】:

  • 不确定你做错了什么,但我认为不是浏览器 ajaxdaddy.com/scriptaculous-autocomplete.html 在 Firefox 中对我来说可以正常工作。
  • 您需要更具体地了解“缺陷”的含义。它根本不起作用,还是以意想不到的方式起作用?您可以尝试的一件事是打开 Chrome 的 Web 开发人员工具栏(按 F12)并查看控制台选项卡中是否有任何错误消息。您可以在 IE10(按 F12)和 Firefox(我不确定热键,右键单击页面上的任意位置并单击检查元素...)中执行相同操作。
  • /data/clients.php 返回什么?在什么内容类型下?另外,尝试原型 1.7.1
  • 我已经更新了我的答案,你能检查下拉菜单是否有内容吗?并在控制台中查看是否有任何错误?

标签: php javascript firefox autocomplete scriptaculous


【解决方案1】:

您好坦克,所有的快速答案。有缺陷是什么意思。我正在更新一个旧系统,以便为任何浏览器做好准备。有缺陷意味着自动完成功能不起作用。如果我在较新的浏览器中输入任何内容,则不会发生任何事情。当您激活兼容模式时,它可以在 ie 10 中使用。

系统没有使用 json 文件。 /data/clients.php 返回一个

<ul><li></li></ul> 

文字段落。

例如:

<ul><li><span class='informal'>Aicher Jasmin</span> (<span class='selectme'>65</span>)</li><li><span class='informal'>Bader Jacqueline Bernice</span> (<span class='selectme'>77</span>)</li><li><span class='informal'>Freisslich Claudia</span> (<span class='selectme'>78</span>)</li><li><span class='informal'>Goller Sascha</span> (<span class='selectme'>64</span>)</li><li><span class='informal'>Hebein Ilse</span> (<span class='selectme'>75</span>)</li><li><span class='informal'>Hohenwarter Berndt</span> (<span class='selectme'>60</span>)</li><li><span class='informal'>Kanz Bernhard</span> (<span class='selectme'>69</span>)</li><li><span class='informal'>Kohlmaier Angelika</span> (<span class='selectme'>68</span>)</li><li><span class='informal'>Konic Isabella</span> (<span class='selectme'>71</span>)</li><li><span class='informal'>Kosche Karl-Heinz</span> (<span class='selectme'>63</span>)</li><li><span class='informal'>Kreilitsch Jutta</span> (<span class='selectme'>70</span>)</li><li><span class='informal'>Kribitsch Bernhard</span> (<span class='selectme'>61</span>)</li><li><span class='informal'>Lackner Ermelinde</span> (<span class='selectme'>79</span>)</li><li><span class='informal'>M&ouml;sslacher Wolfgang</span> (<span class='selectme'>67</span>)</li><li><span class='informal'>M&uuml;ller Hans</span> (<span class='selectme'>54</span>)</li></ul>

我也不认为数据源是问题所在,因为它适用于旧版浏览器。

如果我在 Firefox 中启动开发者控制台,然后输入:

我看到该过程被调用并且脚本正在从 [07:35:47.367] POST https://myserver.at/data/clients.php [HTTP/1.1 200 OK 45ms] 获取数据

但我没有看到带有自动完成建议的下拉 div。 它可能是一个 css Probleme 吗? 这是自动完成的 css 文件:

div.auto-complete {
  position:absolute;
  width:250px;
  background-color:white;
  border:1px solid #888;
  margin:1px 1px 0 1px;
  padding:0px;
}
div.auto-complete ul {
  list-style-type: none;
  margin:0px;
  padding:0px;
}
div.auto-complete ul li.selected { background-color: #ffb;}
div.auto-complete ul li {
  list-style-type: none;
  display:block;
  margin:0;
  padding:2px;
  height:22px;
  cursor:pointer;
}

【讨论】:

    【解决方案2】:

    想到为什么它可以在较旧的浏览器中运行但不能在较新的浏览器中运行的一件事是您的 JSON 无效:

    var b = eval("[{nooo:'json0'},{nooo:'json1'}]"); //works
    var b = JSON.parse("[{nooo:'json0'},{nooo:'json1'}]")// doesn't
                  // because the string isn't valid json
    var b = JSON.parse('[{"nooo":"json0"},{"nooo":"json1"}]');//works, valid JSON string
    

    要解决这个问题,您应该让 PHP 返回有效的 JSON。

    在安装了 Firebug 插件的 FireFox 中,您能否右键单击文本框并选择“使用 firebug 检查元素” 如果 Firebug 窗口停靠,您应该会看到元素,元素下方是“下拉”结果。

    当您键入内容并且 xhr 请求完成时,结果应该有一个 UL 元素,当我在 http://www.ajaxdaddy.com/scriptaculous-autocomplete.html 上使用它时,请参见下图

    我上面提到的 URL 是否有效(它适用于我的 Firefox,但使用的是 1.7)?

    结果如下:

    【讨论】:

      【解决方案3】:

      是的,一切都如你所说,还有示例链接。但是当我调试元素时,div css 道具是 display:none 并且它们不会改变。他添加了元素但不显示它们。

          <div id="possibleClientUpdate" style="display: none;">
      <ul>...
      </div>
      

      我该如何解决这个问题?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-28
        • 2020-11-14
        • 2014-03-11
        • 2014-01-16
        • 2011-03-14
        • 2013-12-23
        • 2018-01-10
        • 2016-02-24
        相关资源
        最近更新 更多