如何使用struts2-jquery在Struts2 Autocompleter中突出显示并选择第一项?

w8f9ii69  于 2023-05-06  发布在  jQuery
关注(0)|答案(1)|浏览(121)

我在我的应用程序中有下面的组合框,我使用struts2和dojo来显示自动完成。如果你注意到它显示的输入文本突出显示在结果中。如果我们点击外部的键入文本将被选中。

上图的代码

<body>
    <h1>Struts 2 autocompleter example</h1>
    <s:form action="resultAction" namespace="/" method="POST">
      <sx:autocompleter
        label="What's your lucky number?"
        name="yourLuckyNumber"
        autoComplete="false"
        list="{'1','12','13','14','21','22','23','24','31','32','33','34','41','42','43','44'}" />
      <s:submit value="submit" name="submit" />
    </s:form>
  </body>

现在的问题是我必须对struts2-jquery插件做同样的事情。

<sj:autocompleter name="yourLuckyNumber" list=""{'1','12','13','14','21','22','23','24','31','32','33','34','41','42','43','44'}"" ></sj:autocompleter>

但是文本突出显示(粗体)不起作用,如果我在键入的文本之外单击,则该文本将消失。
如何在struts2-jquery中实现这一点?非常感谢!
我在Stack Overflow中找不到任何答案。如果问题不清楚,请告诉我。我会更新的。

kyvafyod

kyvafyod1#

覆盖默认筛选方法解决了此问题。

<sj:autocompleter name="yourLuckyNumber" list=""{'1','12','13','14','21','22','23','24','31','32','33','34','41','42','43','44'}"" onChangeTopics="autocompleteChange" onSearchTopics="autocompleteChange" onSuccessTopics="autocompleteChange"></sj:autocompleter>
$.subscribe('autocompleteChange', function(event, data) {
        // override the filter method
        $.ui.autocomplete.filter = function (array, term) {
            var matcher = new RegExp("^" + $.ui.autocomplete.escapeRegex(term), "i");
            return $.grep(array, function (value) {
                return matcher.test(value.label || value.value || value);
            });
        };
});

相关问题