Html 使用输入值自动完成文本区域
我想使用浏览器中输入的值对textarea执行自动完成。它适用于文本框,但不适用于文本区域。Html 使用输入值自动完成文本区域,html,css,asp.net-mvc-3,Html,Css,Asp.net Mvc 3,我想使用浏览器中输入的值对textarea执行自动完成。它适用于文本框,但不适用于文本区域。 您需要使用外部插件 脚本和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/them
您需要使用外部插件 脚本和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>
$(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
});
});
});
HTML
<textarea id="demo"></textarea>
<div class="ui-widget">
<label for="tags">Tags:</label>
<textarea id="tags" size="30"></textarea>
</div>
脚本
<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>
$(函数(){
//从JSON或隐藏字段获取数据
var availableTags=[“jQuery.com”、“jQueryUI.com”、“jQueryMobile.com”、“jQueryScript.net”、“jQuery”、“免费jQuery插件”];//自动完成单词数组
var minWordLength=2;
功能拆分(val){
返回值拆分(“”);
}
功能提取最后(学期){
返回拆分(term.pop();
}
$(“#demo”)//jQuery选择器
//选择项目时不要离开选项卡上的字段
.bind(“键控”,函数(事件){
if(event.keyCode==$.ui.keyCode.TAB&&$(this.data(“ui自动完成”).menu.active){
event.preventDefault();
}
}).自动完成({
minLength:minWordLength,
来源:功能(请求、响应){
//委托回自动完成,但提取最后一项
var term=extractLast(request.term);
如果(term.length>=minWordLength){
响应($.ui.autocomplete.filter(availableTags,term));
}
},
焦点:函数(){
//防止在焦点上插入值
返回false;
},
选择:功能(事件、用户界面){
var术语=分割(该值);
//删除当前输入
terms.pop();
//添加所选项目
术语推送(ui.item.value);
//添加占位符以在末尾获得逗号和空格
术语。推送(“”);
this.value=terms.join(“”);
返回false;
}
});
});
普通文本框确实可以免费获得自动完成行为 据我所知,通过在web浏览器中安装插件,您可以在textarea中获得类似的行为(甚至更好,具有所有历史记录) 安装后,您将在右上角看到一个小十字图标。单击它将弹出以前的条目
我通常不喜欢在我的web浏览器中安装第三方插件,但如果不小心丢失了我们已经键入的所有文本,这可以节省大量时间和挫折感。首先需要包含jquery UI,然后使用示例代码 HTML
<textarea id="demo"></textarea>
<div class="ui-widget">
<label for="tags">Tags:</label>
<textarea id="tags" size="30"></textarea>
</div>
浏览器当前不支持文本区域的自动完成。HTML5中的
textarea
正式允许该属性,它的默认值为on
,但该值仅表示允许浏览器使用自动完成。他们实际上并没有将其用于文本区域,显然是因为它很少有用,而且实际上可能会令人困惑。用户更可能希望重用在单行文本输入字段中输入的地址信息,而不是他在某个站点的反馈表单中输入的长文本,现在某个站点恰好有一个同名的评论文本区域
因此,您所能做的就是设置一些自己的自动完成功能。(这是其他答案以各种方式提出的建议。)这意味着您需要以某种方式存储用户输入(这也是浏览器为自己的自动完成操作所做的),例如在cookie或
localStorage
中。这通常意味着该功能在站点内部工作,在使用相同技术实现它的页面上工作,但不能跨站点工作。共享您的代码。是否要从数据库或预定义值中获取数据?请使用flexselect autocomplete jquery,而不是使用浏览器输入的历史记录从数据库中获取数据。就像我们将得到的textbox一样,但您正在数组中存储数据。我想像以前提交的值一样从浏览器中获取这些值。@PrashantGRathod您没有提供任何代码,他可以以json格式获取数据,或者从隐藏字段获取数据。这是一个简单的文本框,如果我进行自动完成,然后在第二次输入以前输入的第一个字符时,它将显示以前输入的值。像这样,我想要一个文本区。因为我们没有多行这样的属性textbox@PrashantGRathod这就是我提供的。你检查过了吗?我试过你的代码,它用于存储数组值。我如何在数组中存储用户输入的值?检查parshant的问题,我使用插件提供了相同的解决方案,但他无法理解i Arijit/Vinod,我收到了你的帖子,但我不想存储自动完成值。作为这两种代码,您需要在数组中存储值并检索。但在我的情况下,我希望用户输入值而不是存储值。请建议我。@PrashantGRathod您只能将存储的值显示为自动完成。请按照您的预期发布textbox的工作代码。这是一个简单的代码。那个么我如何在数组中存储用户输入的值呢?这是必需的。我不想存储任何值。谢谢,我试试这个。