awesomeplete的自动补全功能在javascript额外创建的输入字段中不起作用
Autocomplete function from awesomeplete does not work in additionally created input fields by javascript
我有一个html表单从数据库中读出数据。表单包含awesomeplete的自动完成功能,该功能显示在输入字段中输入至少2个字母后可以从数据库中选择的值。这工作得很好!
现在,我已经添加了使用以下javascript函数创建额外输入字段的可能性:enter code here
<script>
var counter = 1;
var limit = 10;
function addInput(divName){
if (counter == limit) {
alert("You have reached the limit of adding " + counter + "
inputs");
}
else {
var newdiv = document.createElement('div');
newdiv.innerHTML = '<br><input type="text"
id="productinput11" name="productinput[]" class="awesomplete"
list="productinputselect" size="20"/>';
document.getElementById(divName).appendChild(newdiv);
counter++;
}
}
</script>
<div id="dynamicInput">
<b></b><input type="text" id="productinput11" name="productinput
[]" class="awesomplete" list="productinputselect" size="20"/>
</div>
<input type="button" value="Weiteres Eingabefeld" onClick="addInput
('dynamicInput');">
enter code here
现在的问题是,awesomeplete的自动完成函数只在该函数的第一个输入字段中工作,而在其他创建的输入字段中不起作用,尽管class=" awescomplete "随处可见。如何使这个函数在所有添加的输入字段中工作?
您的awescomplete已经为所有.awesomplete
类元素加载。
如果您添加了一些,则必须重新实例化Awesomplete
。
else语句应该是这样的
function addInput(divName){
if (counter == limit) {
[...]
} else {
// Create new div
var newdiv = document.createElement('div');
newdiv.innerHTML = '<br><input type="text" name="productinput[]" class="awesomplete" list="productinputselect" size="20"/>';
document.getElementById(divName).appendChild(newdiv);
// Re instantiate Awesomplete
new Awesomplete(newdiv.querySelector('input'), { list: document.querySelector('#productinputselect') });
// Set counter
counter++;
}
}
这里有一个工作示例
var newdiv = document.createElement('div');
newdiv.innerHTML = '<br><input type="text" name="productinput[]" class="awesomplete" list="productinputselect" size="20"/>';
document.body.appendChild(newdiv);
new Awesomplete(
newdiv.querySelector('input'),
{ list: document.querySelector('#productinputselect') }
);
<script src="https://leaverou.github.io/awesomplete/awesomplete.js"></script>
<datalist id="productinputselect">
<option>Ada</option>
<option>Java</option>
<option>JavaScript</option>
<option>Brainfuck</option>
<option>LOLCODE</option>
<option>Node.js</option>
<option>Ruby on Rails</option>
</datalist>
顺便说一下,我在你的新输入元素中删除了你的id=""
属性,因为ID
属性必须是唯一的。
基于awescomplete API文档的答案
相关文章:
- 如何在 JavaScript 中创建输入文本框
- 单击“选择标签”中的“选项”时创建,然后选中“值”创建输入
- 在innerHTML中包含变量值以创建输入id's和占位符
- 简单的jquery对话框可以't创建输入
- 使用javascript创建输入字段
- 如何在react js-JSX中动态创建输入文本字段
- 通过JavaScript动态创建输入元素
- 如何在 Photoshop 脚本中为值创建输入字段
- 如何使用 JQuery 创建输入建议
- 如何使用jquery构建数组并创建输入字段
- 创建输入表单以添加/删除关键字
- 我使用jquery创建输入字段,刷新页面后如何保持这个“新输入值”的存在
- 使用 javascript 从 Bootstrap 3 自动创建输入组
- 当数据为空时,无法使用 javascript 创建输入
- 在 javaScript 中创建输入链接
- 函数不是't创建输入字段
- 在动态创建输入元素时为onclick指定一个参数值
- 对象构造函数具有创建输入的方法
- HTML-为属性动态创建输入标签
- 使用javascript动态创建输入字段