Javascript 将输入框转换为jQuery自动完成的组合框

Javascript 将输入框转换为jQuery自动完成的组合框,javascript,jquery,html,css,Javascript,Jquery,Html,Css,此代码运行正常。但是,我需要帮助使“input”标记显示为一个组合框。我尝试将inputbox设计为组合框,但没有成功。我还在寻找一种方法,通过动态构建选项,使代码与组合框一起工作。非常感谢您的帮助 $(函数(){ var availableTags=新阵列(1000000); var j=0; 对于(变量i=1;i

此代码运行正常。但是,我需要帮助使“input”标记显示为一个组合框。我尝试将inputbox设计为组合框,但没有成功。我还在寻找一种方法,通过动态构建选项,使代码与组合框一起工作。非常感谢您的帮助

$(函数(){
var availableTags=新阵列(1000000);
var j=0;
对于(变量i=1;i
。自定义组合框{
位置:相对位置;
显示:内联块;
边框样式:实心;
边框宽度:1px;
}
.自定义组合框切换{
位置:绝对位置;
排名:0;
底部:0;
左边距:-1px;
填充:0;
}
.自定义组合框输入{
保证金:0;
填充物:5px10px;
}
/*
.自定义组合框列表项{
颜色:蓝色;
字体大小:粗体;
}
.custom combobox输入,.custom-combobox-list-item.ui-state-focus{
颜色:黑色;
字体大小:粗体;
字体:斜体;
}
*/
#标签{
宽度:40px;
}

标签:
试试引导标签

$("#tags").tagsinput("Amsterdam,Washington,Los Angeles");
尝试使用

要使用ajax调用填充Select2,请尝试以下操作:

PHP:


HTML:


$(“#标记”)。选择2({
最小输入长度:2,
阿贾克斯:{
网址:'http://yourdomain.com/ajax.php',
数据类型:“json”,
键入:“获取”,
安静百万:100,
数据:功能(术语){
返回{
搜索:术语
};
},
结果:功能(数据){
返回{
结果:数据
};
}
}
});

您可以使用
数据列表
将选项传输到
文本输入
,然后将其转换为
组合框

我将您的代码精简到最基本的部分,以制作一个简单的示例

<label for="tags">Tags: </label>
<input id="tags" name="tags" type="text" list="options" class="custom-combobox" value="">

<datalist id="options">
    <!-- it puts the options here then the input type text gets them as select options -->
</datalist> 

$(function () {
  var availableTags = new Array(10);
  var j = 0;
  for (var i = 1; i < availableTags.length; i++) {
    $('#options').append("<option value='" + i + "'>");
  }

});
标签:
$(函数(){
var availableTags=新阵列(10);
var j=0;
对于(变量i=1;i
这是一个显示基本功能的,您需要它吗

这很简单,只要看一下这是一个输入,末尾有一个锚

只需点击“查看源代码”查看它是如何实现的


祝你好运

这里有一个快速解决方法,可以让您的inout看起来像一个select。无需更改代码,只需一些HTML/CSS。我将您的输入透明化,并在其背后分层选择。该功能仍然由您的输入处理,但现在它看起来与选择完全相同

演示-

诀窍-使用HTML执行此操作:

<div id="wrapper">
  <select id="fake-tags"></select>
  <input id="tags" type="text" class="custom-combobox" value="" />
</div>
这是一个黑客,但它是一个超级简单的一个,它听起来可能正是你所需要的-你已经有了工作代码,你只需要它看起来有点不同

这是受“好日子”的启发,当时人们习惯于在讨厌的默认浏览器控件上叠加一个好看但假的文件上传控件。默认设置完成了真正的工作,而伪设置只提供了漂亮的UI。既然我们有了FileAPI,人们就不会这么做了

经过一项研究,我找到了一位作者

这是什么?

转换为组合框

  • 自动完成
  • 键盘控制
  • 大多数样式都可以通过css进行自定义
  • 可以动态更改值列表
看起来怎么样?

我为什么这样建议?

这不是为了扩展
元素。许多其他jquery“组合框”插件的行为更像是可搜索的select元素,每个选项都有DISCTINTCT标签和值此插件只允许用户从现有文本值中选择或提供自己的文本值

如何使用?


字段1:
字段2:
jQuery(函数(){
var varValue=12;
var aval=[
"哟",,
'1',
“乔”,
varValue.toString();
//#例1
jQuery('#input1')。组合框(aval);
//#例2
jQuery('#input2')。组合框([
"哟",,
'1',
"Jo",;
});

请检查此项,可能会有所帮助


我将在文本框旁边放置可单击向下箭头的图像。如果用户单击图像而不是在文本框中输入数据,我将在列表框中显示1到10。

u plz add可以吗jsfiddle@JotDhaliwal:您现在可以在堆栈溢出中添加可运行的代码段:@BronoTheVibrator:I已将静态代码转换为可运行的代码段:-p@BronoTheVibrator:使用正确版本的jQuery和jQueryUI。确保它们是兼容的。@bronothevibrator我刚刚有了一个想法,我在下面发布了一个方法,但后来意识到,如果选项列表有100万长,那么键入它会比向下滚动页面找到正确的选项要快得多?那么,您希望在
文本/组合框
中有多少实际选项呢?列表需要动态生成,而不是预先填充。从哪里获得列表?javascript正在生成列表。我建议您运行代码,看看它是如何工作的。@BronoTheVibrator:If创建
<label for="tags">Tags: </label>
<input id="tags" name="tags" type="text" list="options" class="custom-combobox" value="">

<datalist id="options">
    <!-- it puts the options here then the input type text gets them as select options -->
</datalist> 

$(function () {
  var availableTags = new Array(10);
  var j = 0;
  for (var i = 1; i < availableTags.length; i++) {
    $('#options').append("<option value='" + i + "'>");
  }

});
<div id="wrapper">
  <select id="fake-tags"></select>
  <input id="tags" type="text" class="custom-combobox" value="" />
</div>
#tags {
  width: 40px;
  border: 0;
  background: none;
  margin-left: -50px;
}
#tags:focus {
  outline: 0
}
#fake-tags {
  width: 50px;
}
<div class="inputCombox">
    <label for="input1">Field1:</label>
    <input id="input1" type="text" value="" />
</div>
<div class="inputCombox">
    <label for="input2">Field2:</label>
    <input id="input2" type="text" value="" />
</div>

jQuery(function () {
    var varValue = 12;
    var aval = [
        'Yo',
        '1',
        'Jo',
    varValue.toString()];

    //#Example 1 
    jQuery('#input1').combobox(aval);

    //#Example 2 
    jQuery('#input2').combobox([
        'Yo',
        '1',
        'Jo']);     
});