javascript自动完成函数
您好,我有以下代码有问题,我试图使它当您点击输出插入到输入字段。你能帮帮我吗?我已经试了好几个小时了,一点运气都没有javascript自动完成函数,javascript,Javascript,您好,我有以下代码有问题,我试图使它当您点击输出插入到输入字段。你能帮帮我吗?我已经试了好几个小时了,一点运气都没有 <script type="text/javascript"> var input = $('#CompanyName'); var output = $('#output'); var timer; input.on('keyup', function() { delaySearch(this.value); }); function delaySea
<script type="text/javascript">
var input = $('#CompanyName');
var output = $('#output');
var timer;
input.on('keyup', function() {
delaySearch(this.value);
});
function delaySearch(keywords) {
clearTimeout(timer);
timer = setTimeout(function() {
performSearch(keywords);
}, 1000);
}
function performSearch(keywords) {
$.ajax({
type: "POST",
url: "/print/order/search",
data: { query: keywords },
cache: false,
dataType: "json",
async: true,
success: function(data) {
for(var key in data) {
output.append('<li onclick="fill('+ data[key].ClientName +')">' + data[key].ClientName) + '</li>';
}
}
});
}
function fill(thisValue) {
input.val(thisValue);
clearTimeout(timer);
}
</script>
<!-- Text input-->
<div class="form-group">
<label class="col-md-4 control-label" for="CompanyName">Firma</label>
<div class="col-md-5">
<input id="CompanyName" onblur="fill();" name="CompanyName" type="text" placeholder="Firma" class="form-control input-md">
<ul id="output"></ul>
<span class="help-block"></span>
</div>
</div>
Uncaught ReferenceError: somevalue is not defined
您需要将脚本放在HTML下面。或者将其包装到jQuery Document ready函数中。并确保在脚本realseanp找到正确答案之前,已在页面上加载jQuery。我会尽量给你解释得更清楚一点。当浏览器开始处理和呈现页面时,它会自顶向下加载。因此,在创建DOM之前,将运行并评估javascript脚本 因此,jquery选择器:
var input=$('#CompanyName')代码>如果要检查它们,它们将是一个空数组。他们找不到#CompanyName元素,因为它尚未呈现
如果您使用jQuery的$(document).ready()
函数,那么您可以确信,在dom完成呈现之前,您的代码不会运行,因此将按照您的意愿查找元素。因此,最终,您的代码需要更改为:
$(document).ready(function(){
//Put your code in here.
//It will then fire once the dom is ready.
});
更新:
此外,还有您的更新。我注意到错误在于没有定义“填充”。填充是您的onclick方法。在呈现dom之后,将对js脚本进行评估。因此,在呈现dom以及呈现带有onclick的标记时,还不存在填充方法。两种解决方案:
将脚本移到dom上方,并放置一个var fill
在$(文档)之外。准备好了
所以本质上:
变量填充;
$(document.ready(function()){
//你的代码
});
不要使用onclick dom属性,而是使用jquery绑定事件
Ionut
为此:
<ul id="output"><li>Ionut</li></ul>
如果我理解正确,你想点击关于输入字段的文本并将其放入输入字段吗?是的..我整天都在绞尽脑汁..不太明白如何做这部分你得到的确切错误是什么在加载数据后添加元素?是的js放在底部对于html文件,我只在这里发布了所需的数据,不想白白添加额外的代码。我只发布了我使用js代码的输入部分,因为表单包含大约20个输入。将是一团混乱:-)是的,解决方案是单击,这就是它不起作用的原因。感谢大家花时间阅读我的帖子,并帮助我找到解决方案:D
$(document).ready(function(){
//Put your code in here.
//It will then fire once the dom is ready.
});
<ul id="output"><li>Ionut</li></ul>
$('#output li').click(function(e) {
fill(/*your value/*)
});