2014-10-08 91 views
0

我想使用浏览器输入的值为文本区域创建自动完成。它正在为文本框工作,但不工作文本区域。 使用输入值自动完成文本区域

+2

分享你的代码。你想从数据库或预定义的值中获取数据吗? – 2014-10-08 05:16:36

+0

使用的FlexSelect自动完成的jquery – 2014-10-08 05:18:32

+0

使用浏览器从DB未输入历史。就像我们将获取文本框 – 2014-10-08 05:21:58

回答

0

普通文本确实提供自动的行为是免费的。

据我所知,你可以在你的网络浏览器中安装lazarus插件,为textarea(甚至更好,所有的历史记录)获得类似的行为。

安装完成后,右上角会出现一个小十字图标。点击它将弹出以前的条目。

我通常不喜欢在我的网络浏览器中安装第三方插件,但是当意外丢失我们已经输入的所有文本时,这可以节省大量时间和沮丧。

+0

雅这一个需要。我不想存储任何值。谢谢,我会试试这个。 – 2014-10-08 05:47:12

0

你需要使用外部插件

脚本和CSS

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
<link rel="stylesheet" type="text/css" href="http://code.jquery.com/ui/1.10.4/themes/ui-lightness/jquery-ui.css"/> 
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js"></script> 

HTML

<textarea id="demo"></textarea> 

脚本

<script> 
$(function() { 
//Get the Data from a JSON or Hidden Feild 
var availableTags = ["jQuery.com", "jQueryUI.com", "jQueryMobile.com",  "jQueryScript.net", "jQuery", "Free jQuery Plugins"]; // array of autocomplete words 
var minWordLength = 2; 
function split(val) { 
return val.split(' '); 
} 

function extractLast(term) { 
return split(term).pop(); 
} 
$("#demo") // jQuery Selector 
// don't navigate away from the field on tab when selecting an item 
.bind("keydown", function(event) { 
if (event.keyCode === $.ui.keyCode.TAB && $(this).data("ui-autocomplete").menu.active)  { 
event.preventDefault(); 
} 
}).autocomplete({ 
minLength: minWordLength, 
source: function(request, response) { 
// delegate back to autocomplete, but extract the last term 
var term = extractLast(request.term); 
if(term.length >= minWordLength){ 
response($.ui.autocomplete.filter(availableTags, term)); 
} 
}, 
focus: function() { 
// prevent value inserted on focus 
return false; 
}, 
select: function(event, ui) { 
var terms = split(this.value); 
// remove the current input 
terms.pop(); 
// add the selected item 
terms.push(ui.item.value); 
// add placeholder to get the comma-and-space at the end 
terms.push(""); 
this.value = terms.join(" "); 
return false; 
} 
}); 
}); 
</script> 

DEMO LINK

ANOTHER PLUGIN TEXTEXTJS

+0

但是您正在将数据存储在数组中。我想像以前提交的值那样从浏览器中获取这些值。 – 2014-10-08 05:30:28

+0

@PrashantGRathod在你没有提供任何代码其次,他可以JSON格式或隐藏字段 – 2014-10-08 05:31:06

+0

获取数据这很简单文本框,如果我使自动完成然后secound时间我输入先前输入的第一个字符,然后它会显示先前输入的值。就像我想要的TEXTAREA一样。因为我们没有像财产为多文本 – 2014-10-08 05:39:55

0

首先,你需要包括jQuery UI的然后使用示例代码

HTML

<div class="ui-widget"> 
<label for="tags">Tags:</label> 
<textarea id="tags" size="30"></textarea> 
</div> 

JS

$(function() { 
$("document").ready(function() { 
    var availableTags = [ 
     "ActionScript", 
     "AppleScript", 
     "Asp", 
     "BASIC", 
     "C", 
     "C++", 
     "Clojure", 
     "COBOL", 
     "ColdFusion", 
     "Erlang", 
     "Fortran", 
     "Groovy", 
     "Haskell", 
     "Java", 
     "JavaScript", 
     "Lisp", 
     "Perl", 
     "PHP", 
     "Python", 
     "Ruby", 
     "Scala", 
     "Scheme"]; 

    $("#tags").on("keydown", function() { 
     var newY = $(this).textareaHelper('caretPos').top + (parseInt($(this).css('font-size'), 10) * 1.5); 
     var newX = $(this).textareaHelper('caretPos').left; 
     var posString = "left+" + newX + "px top+" + newY + "px"; 
     $(this).autocomplete("option", "position", { 
      my: "left top", 
      at: posString 
     }); 
    }); 

    $("#tags ").autocomplete({ 
     source: availableTags 
    }); 
}); 

}); 
+0

检查什么parshant是问,我提供了使用插件同样的解决方案,但他无法理解它 – 2014-10-08 05:44:52

+0

嗨Arijit /维诺德,我收到了你的文章,但我不希望存储自动完成值。作为你在数组中存储值和检索的代码。但在我的情况下,我希望用户输入的值不是存储值。请建议我。 – 2014-10-08 05:51:07

+0

@PrashantGRathod您只能将存储的值显示为自动完成。请按照预期发布文本框的工作代码。这个简单的代码: – 2014-10-08 05:55:05

0

浏览器当前不支持自动完成的textarea的。 autocomplete属性在HTML5中正式允许为textarea,并且它的默认值为on,但此值仅表示浏览器允许允许使用自动完成。他们实际上并没有将它用于textareas,显然是因为它很少有用,实际上可能会引起混淆。用户想要重复使用他在单行文本输入字段中输入的地址信息的可能性要大于他输入的某些长文本,比如某个站点的反馈表单,现在某个其他站点恰好有一个评论textarea同名。

因此,您所能做的就是设置一些自己的自动完成功能。 (这是其他答案以各种方式提出的建议)。这意味着您需要以某种方式存储用户输入(这也是浏览器为自己的自动完成操作所做的)在饼干或localStorage。这通常意味着该功能在网站内部工作,在使用相同技术实现它的页面上,但不在网站上。