的HTML

<input type='text' id='searchable'value='hello world' />
<input type='hidden' id=x value='hel' />


我如何从#searchable中选择文本,从隐藏输入值的末尾到#searchable的末尾?

固定谢谢大家

    $('input.complete').live('keyup.autocomplete', function(){
        var hi=$(this).val().toUpperCase();
        var was=this;//PROBlEM was here... was=$(this)
            $(this).autocomplete({
                source: function(request, response) {
                        $.ajax({ url: '<?=base_url()?>ajax/ac',
                        data: { 'term': this.term,'page': 'clinic','key': this.element.attr('data-complete')},
                        dataType: "json",
                        type: "POST",
                        success: function(data){
                            if(!data.length){
                                var result = [{label: 'No match found',value: response.term}];
                                response(result);
                            }else{
                                response(data);
                                $(was).val(data[0]['value']);
                                was.selectionStart=hi.length;
                                was.selectionEnd=data[0]['value'].length;
                            }
                        }
                    });
                },
                select: function(event, ui){},
                minLength: 2,
            });
        });

最佳答案

试试看

(function() {
    var search = $('#searchable')[0],
        searchvalue = search.value,
        xtext = $('#x').val(),
        startAt = searchvalue.indexOf(xtext) + xtext.length;
    search.selectionStart = startAt;
    search.selectionEnd = searchvalue.length;
}());


Live demo

如果x值总是从搜索值的第一个字符开始匹配,则searchvalue.indexOf(xtext)是多余的,因为它将始终返回0并且可以安全地删除。

参考文献:


多罗(Dottoro):selectionStartselectionEnd
MSDN:selectionStartselectionEnd
MDN:HTMLInputElement Properties


注意:由于selectionStartselectionEnd是HTML5的一部分,因此不支持IE

关于javascript - 扩展jQuery自动完成功能:从文本输入内部选择字符串的一部分,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14426422/

10-10 14:44