jQuery的按键事件触发只在特定的键码自动完成(jquery keypress event to

2019-09-21 06:05发布

我使用jQuery自动完成插件,并正尝试手动触发基于用户输入某些键的自动完成。 我想自动完成对输入绑定在飞行所以一旦用户进入某个键触发“被搜索的,我现在进入的数据”,这可能是在中间的自动完成可以开始寻找匹配外地的,不一定一开始。

我绑定一个按键事件的输入。 当用户输入特定键,如“=”,我想显示所有阵列中的元素。 当用户接着输入一个字母,将自动完成从所述阵列上的字符相匹配的选项。 这或多或少是试图模仿在Excel中会发生什么,当用户点击等号键,看到可用的功能,除了“=”键不必在输入的第一个元素,它应该自动完成每一次“ =”被按下,每一个选项被选择的时间解绑交流。

var array1 = ['one','two','three'];

$.input1.bind('keypress', function(event) {
  var keyCode;
  if (event.keyCode > 0) {
    keyCode = event.keyCode;
  } else if (typeof(event.charCode) != "undefined") {
    keyCode = event.charCode;
  }

  if (String.fromCharCode(keyCode) == '=') {
    $.input1.unbind('keypress');  

    $.input1.autocomplete(array1);

    $.input1.blur();
    $.input1.focus();
    e = $.Event('keydown');
    e.which = keyCode;
    $.input1.trigger(e);
  }

});

即使我得到的自动完成触发,如果用户输入文本之前任何可能匹配,它不会因为以前的文本相匹配。 因此,如果用户输入“ABD =”自动完成越来越“ABB =”为Q参数,而不只是“=”。

任何帮助非常感谢,我太坚持!

Answer 1:

你真正需要的是能够自动完成插件不搜索前过滤字段的值。 纵观插件它看起来不像是内置的。但是,这并不从加它阻止我们。

打开插件代码,并找到函数最后字(),看看行261然后将其添加到该函数:

if ( options.formatValue ){
    value = options.formatValue(value);
}

所以最后字功能应该是这样的:

function lastWord(value) {
    if ( options.formatValue ){
        value = options.formatValue(value);
    }
    if ( !options.multiple )
        return value;
    var words = trimWords(value);
    return words[words.length - 1];
}

然后在你的jQuery代码,你可以这样做:

$(document).ready(function(){
    var array1 = ['one','two','three'];
    $('#test').autocomplete(array1,{
                formatValue: function(value){
                    if (value.search('=') == -1) return '';
                    return value.substring(value.search('=')+1);
                }
    });
});

这将让你过滤和搜索之前格式化字段的值。 既然你只希望做搜索如果值中有“=”号字符,你寻找它,如果它没有找到你返回一个空字符串。 如果它发现你之前删除它,一切都和什么回报用户后,键入英寸



Answer 2:

您可以通过添加代码的第二行修改autocomplete.js

  ...
  .bind( "keydown.autocomplete", function( event ) {
+ self.options.keydownEvent=event;
  if ( self.options.disabled ) {...

然后,你指的keydownEvent你这样SORCE函数内

source:function(){
var event=this.options.keydownEvent;
... //Handling the event

请记住,VAR事件有哪些字段。 例如,如果event.which是13,则Enter键被按下。 希望能帮助到你。



文章来源: jquery keypress event to trigger autocomplete only on specific keycodes