jQuery   发布时间:2022-04-19  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Jquery自动填充 – 预填充文本字段大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个自动完成字段(改编自geo autocomplete以查找地理位置),当用户从列表中选择位置时,我会抓取lat / lon以及用于搜索的其他一些信息.但是现在它仅在用户实际从自动完成列表中选择时才起作用(而不是开始键入并单击输入,例如他们没有从列表中选择).

我看到了我希望在http://www.airbnb.com/上复制的行为,基本上如果你开始输入一个位置(例如伦敦),实际的文本字段预先填充了列表中的第一个条目 – 有人可以解释如何使用jquery自动完成来完成此操作?我可以将autoFocus设置为true,专注于第一个字段,但实际上不填充文本字段?

任何帮助赞赏.

解决方法

这是一个解决方案.可能需要进行一些调整才能在同一页面上使用多个自动完成功能,但它可以使用一个

(function( $) {

    $.extend($.ui.autocomplete.prototype,{

        _createSELEction: function($input,start,end) {

            // get a reference to the input element
            var field = $input.get(0);

            // set the SELEction (browser specific methods)
            if( field.createTextRange ){
                var selRange = field.createTextRange();
                selRange.collapse(true);
                selRange.moveStart("character",start);
                selRange.moveEnd("character",end);
                selRange.SELEct();
            } else if( field.setSELEctionRange ){
                field.setSELEctionRange(start,end);
            } else {
                if( field.SELEctionStart ){
                    field.SELEctionStart = start;
                    field.SELEctionEnd = end;
                }
            }

            field.focus();
        },_autoFill: function($input,svalue) {

            // here 'this' is the plugin itself
            // if the last user key pressed was BACkspace,don't autofill
            if (this._lastKeyPressCode != 8) {

                // fill in the value (keep the case the user has typed)
                $input.val($input.val() + sValue.subString(this._prevIoUsValue.length));

                // SELEct the portion of the value not typed by the user (so the next character will erasE)
                this._createSELEction($input,this._prevIoUsValue.length,sValue.length);
            }
        },_prevIoUsValue: '',_lastKeyPressCode: null
    });

        $( ".ui-autocomplete-input" )
        .live( "keyup",function() {

            var $this = $(this),autocomplete = $this.data('autocomplete'),key;

            autocomplete._lastKeyPressCode = key = event.which;

            // do nothing on BACkslash/command keys
            if( key == 46 || (key > 8 && key < 32) )
                return autocomplete.menu.deactivate();

            // check value is different
            var v = $this.val();
            if (v == autocomplete._prevIoUsvalue)
                return;

            // save value
            autocomplete._prevIoUsValue = v;

        })
        .live( "autocompleteopen",autocomplete = $this.data( "autocomplete" ),menu = autocomplete.menu;

            // check the 'SELEctFirst' setTing
            if ( !autocomplete.options.SELEctFirst ) {
                return;
            }

            // activate the menu
            menu.activate( $.Event({ type: "mouseenter" }),menu.element.children().first() );

            // set the autoFill
            autocomplete._autoFill($this,menu.element.children().first().text());
        });

    }( jQuery ));

    $('.for-autocomplete').autocomplete({SELEctFirst: true,source: ['aa','absolution','borinage','baba']});

要初始化自动完成小部件,您必须添加新选项SELEctFirst:true / false.

自动填充和createSELEction方法取自此autocomplete plugin,现场活动的绑定受到此post的启发.

请享用

编辑

我已经调整了代码,所以它现在与jQuery UI Autocomplete Widget完全集成.它适用于同一页面上的多个插件实例.

:O)

大佬总结

以上是大佬教程为你收集整理的Jquery自动填充 – 预填充文本字段全部内容,希望文章能够帮你解决Jquery自动填充 – 预填充文本字段所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。