Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 使用输入值自动完成文本区域_Html_Css_Asp.net Mvc 3 - Fatal编程技术网

Html 使用输入值自动完成文本区域

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

我想使用浏览器中输入的值对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/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的工作代码。这是一个简单的代码。那个么我如何在数组中存储用户输入的值呢?这是必需的。我不想存储任何值。谢谢,我试试这个。