jquery ui 自动完成堆栈溢出样式

发布于 2024-10-21 03:36:53 字数 431 浏览 1 评论 0原文

我有兴趣使用 jquery 自动完成构建堆栈溢出样式标签输入。

所以主要操作是:

  1. 如果你输入'a',带有'a'的查询将会显示(没问题,这就是jquery自动完成的工作原理)
  2. 如果你按下或向上选择一个推荐,输入框就会改变。

这里的技巧是,每当输入更改时,只有最后一项会更改。

这意味着,如果您获取输入的值,并选择一个查询,只有

var l = $input.val().split(' ');
l[l.length-1] will be changed

我尝试过 Monkeypatching jquery autocomplete 的 _value 函数,但没有成功。我意识到,即使你向上、向下或 esc 移动,输入也会变得混乱。我恳求在自动完成方面有经验的人给我一些启发

I am interested in building a stack overflow style tags input using jquery autocomplete.

So the main operations are:

  1. If you type 'a', queries with 'a' will show up (no problem, that's how jquery autocomplete works)
  2. If you press down or up to select a recommendation, the input box gets changed.

The trick here is that whenever the input is changed, only the last item is changed.

This means that if you take the value of the input, and select a query, only

var l = $input.val().split(' ');
l[l.length-1] will be changed

I tried monkeypatching jquery autocomplete's _value function, but to no success. I realized that even when you move up or down or esc, the input gets messed up as well. I am begging for someone who is experienced in this autocomplete to shed me some light on this

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

月牙弯弯 2024-10-28 03:36:53

无论如何,我已经设法理解源代码并解决我的问题。

基本上,monkeypatching jquery.autocomplete 的 _value 函数就可以了。

(function( $, undefined ) {

  /* This is the getter and setter of the value
   * When getting, parse and return the last part
   * When setting, just set the last part
   */
  jQuery.ui.autocomplete.prototype._value = function( value ) {
    var originalstr = this.valueMethod.apply( this.element);

    if (arguments.length) { 
      var l = originalstr.split(' ');
      l[l.length -1] = arguments[0];
      this.valueMethod.apply(this.element, [l.join(' ')]);
    }
    else { 
      var l = originalstr.split(' ');
      return l[l.length -1];
    }
  };

} ( jQuery ));

此代码修改了自动完成获取和设置输入框内的值的方式

Anyway I have managed to understand the source code and fix my problem.

Basically monkeypatching jquery.autocomplete's _value function will do.

(function( $, undefined ) {

  /* This is the getter and setter of the value
   * When getting, parse and return the last part
   * When setting, just set the last part
   */
  jQuery.ui.autocomplete.prototype._value = function( value ) {
    var originalstr = this.valueMethod.apply( this.element);

    if (arguments.length) { 
      var l = originalstr.split(' ');
      l[l.length -1] = arguments[0];
      this.valueMethod.apply(this.element, [l.join(' ')]);
    }
    else { 
      var l = originalstr.split(' ');
      return l[l.length -1];
    }
  };

} ( jQuery ));

This code modifies the way autocomplete get and sets the value inside the input box

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文