0

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,
            });
        });
4

2 回答 2

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;
}());

现场演示

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

参考:

注意:作为HTML5selectionStartselectionEnd一部分,不支持 IE < 9。如果您要推出自己的预输入,如果您打算支持旧的 IE,我建议在应用文本输入元素中的自动完成之前对这些进行功能测试。

于 2013-01-20T16:19:40.573 回答
0

给你...在 Firefox 和 Chrome 中测试...

这将从隐藏值到字符串的末尾突出显示:

$("#searchable")[0].selectionStart = $("#x").val().length;
$("#searchable")[0].selectionEnd = $("#searchable").val().length;

这将从开始到隐藏值突出显示:

var s = $("#x").val();

$("#searchable")[0].selectionStart = 0;
$("#searchable")[0].selectionEnd = s.length;
于 2013-01-20T16:18:34.067 回答