我正在使用.live
jQquery函数来更新$ post php脚本中的内容,该脚本会在输入框中打开弹出窗口。问题是文本的值转到输入字符串但是当弹出栏fadesOut()
时消失了。
<script type="text/javascript">
$(document).ready(function() {
$(".category").live("click", function(){
varval= $(this).text();
$("#inputString").val(varval);
});
});
</script>
我真的很感激如何使价值保持不变。
这是我的HTML
<div>
<form id="searchform">
<div>
What are you looking for? <input type="text" size="30" value="" id="inputString" onkeyup="lookup(this.value);" />
</div>
<div id="suggestions"></div>
</form>
这是JS
function lookup(inputString) {
if(inputString.length == 0) {
$('#suggestions').fadeOut(); // Hide the suggestions box
} else {
$.post("rpc.php", {queryString: ""+inputString+""}, function(data) { // Do an AJAX call
$('#suggestions').fadeIn(); // Show the suggestions box
$('#suggestions').html(data); // Fill the suggestions box
});
}
}
这会调用一个php文件,其中包含以下内容
<p id="searchresults">
<?php
while ($result = $query ->fetch_object()) {
if($result->liveSearchID != $catid) { // check if the category changed
echo '<a href="" class="category">'.$result->Keyword.'</a>';
$catid = $result->liveSearchID;
}
?></p>
好的,这是我试过的一个变体,它仍在做同样的事情
$(document).delegate(".category", "click", function( event ) {
var varval= $(this).text();
$("#inputString").val(varval);
});
我为我们的服务器添加了测试链接
请使用面食作为测试文本
visit http://122.160.94.46/autoSuggest1/
答案 0 :(得分:0)
也许是空间?
varval= $(this).text();
更改为
var val= $(this).text();
为更新的jQuery版本重做:
$(document).ready(function() {
$(document).on('click',".category", function(){
var val= $(this).text();
$("#inputString").val(val);
});
});
请尝试在.category
而不是“文档”上找到较低级别的容器,以便将事件handerl附加到。
编辑:根据发布的标记更改,您可能需要阻止链接点击时的默认值。试试这个可选的部分:
$(document).ready(function () {
$('#searchresults').on('click', ".category", function (e) {
e.preventDefault();
var val = $(this).text();
$("#inputString").val(val);
return false;
});
});
这是一个工作小提琴,显示了这个,工作得很好...... http://jsfiddle.net/saYKy/