隐藏$ post值后使用.live重置值

时间:2013-08-01 19:28:22

标签: jquery

我正在使用.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/

1 个答案:

答案 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/