1

我已经从这个 Stackoverflow 问题/答案中复制和粘贴了很多内容,它似乎不想在我的页面上工作。我还尝试创建一个空白的 PHP 页面来尝试它,但它仍然无法正常工作。

此外,我在标题中包含的 jQuery 库是 Google 库中的一个,也是 jQuery 的官方库之一:http ://code.jquery.com/jquery-latest.min.js 。

它必须与编码或其他东西有关,因为代码在我的浏览器中也可以在 JSFiddle 上正常工作:http: //jsfiddle.net/kn3Qu/


这是我个人使用的代码:

<input id="dam" type="text" />

<div id="dam_return">
    <a href="#">DLH Victoria</a>
    <a href="#">DLH Sam</a>
    <a href="#">Studly</a>
</div>

和Javascript:

$('#dam_return a').click(function() {
    var value = $(this).html();
    var input = $('#dam');
    input.val(value);
    return false;
});

如果有人可以帮助我,那就太棒了!

编辑:我认为我的问题是因为每次在“dam”输入上按下一个键时都会发生一个 SQL 查询。

这是发生的 EXACT SQL 查询:

<div id="dam_return_search"><a href="#">Maybe this one works? (but no, it doesn't)</a><br />
<?php

$connect = // blahblahaa

if (isset($_GET['dam_text'])) {
    getSuggest($text);
}

function getSuggest($text) {

    $dam = $_GET['dam_text'];

    $sqlCommand = "SELECT `name` FROM `alpacas1` WHERE `name` LIKE '%$dam%'";

    $query = mysql_query($sqlCommand);

    $result_count = mysql_num_rows($query);

    while ($row = mysql_fetch_assoc($query)) {
        echo '<a href=#>'.$row['name'].'</a><br />';
    }

}

?>
</div>

下面是 DAM 输入框和与之关联的代码:

<script type="text/javascript">
function suggest1() {
    var dam_text = document.getElementById('dam').value;

    if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
    } else {
        xmlhttp = new ActiveXObject('MicrosoftXMLHTTP');
    }
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            document.getElementById('dam_return').innerHTML = xmlhttp.responseText;
        }
    }
    var target = 'dam_search.php?dam_text=' + dam_text;
    xmlhttp.open('GET', target, true);
    xmlhttp.send();
}
</script>


<script type="text/javascript">
$(document).ready(function(){
    $("#dam_return_search a").click(function(){
        var value = $(this).html();
        var input = $('#dam');
        input.val(value);
    });
});
</script>


<tr>
  <td id="label">Dam:</td> 
  <td id="option">
    <input type="text" name="dam" id="dam" value="<?php echo "$dam"; ?>" onkeyup="suggest1();"><br />
    <div id="dam_return"></div>
  </td>
</tr>
4

3 回答 3

2

在启动 .click() 事件侦听器之前,您需要页面的 DOM 完全加载。您可以使用$(document).ready()来做到这一点。

这是它的JSFiddle

<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $("#dam_return a").click(function(){
        var value = $(this).html();
        var input = $('#dam');
        input.val(value);
    });
});
</script>

<input id="dam" type="text" />

<div id="dam_return">
    <a href="#" class="test">DLH Victoria</a>
    <a href="#" class="test">DLH Sam</a>
    <a href="#" class="test">Studly</a>
</div>
于 2013-10-13T07:01:21.233 回答
1

好吧,我认为您应该考虑使用此代码,坦率地说,我认为您不应该使用.html() jquery 方法来获取文本,而应该使用text()方法,我离线和在线尝试了此代码,它可以工作

请使用preventDefault()方法停止事件,而不是返回 false

$(document).ready(function () {
    $('.tags_select a').click(function(evt) {
        var value = $(this).text();
        var input = $('#text_tag_input');
        input.val(input.val() + value);
        evt.preventDefault();
    });
});

您还可以在此处阅读有关 return false 和 preventDefault() 之间的区别

于 2013-10-13T07:40:32.123 回答
0

Instead of having Javascript in the initial file change the input box "dam" I changed it so that the dam_search.php file changed it "onclick".

Here is the code I had:

<div id="dam_return_search"><a href="#">Maybe this one works? (but no, it doesn't)</a><br />
<?php

$connect = // blahblahaa

if (isset($_GET['dam_text'])) {
    getSuggest($text);
}

function getSuggest($text) {

    $dam = $_GET['dam_text'];

    $sqlCommand = "SELECT `name` FROM `alpacas1` WHERE `name` LIKE '%$dam%'";

    $query = mysql_query($sqlCommand);

    $result_count = mysql_num_rows($query);

    while ($row = mysql_fetch_assoc($query)) {
        echo '<a href=#>'.$row['name'].'</a><br />';
    }

}

?>
</div>

Here is what I changed it to:

<?php

$connect = // blahblahaa

if (isset($_GET['dam_text'])) {
    getSuggest($text);
}

function getSuggest($text) {

    $dam = $_GET['dam_text'];

    $sqlCommand = "SELECT `name` FROM `alpacas1` WHERE `name` LIKE '%$dam%'";

    $query = mysql_query($sqlCommand);

    $result_count = mysql_num_rows($query);

    while ($row = mysql_fetch_assoc($query)) {
    echo '<a href=# onclick="document.getElementById(\'dam\').value=\''.$row['name'].'\';">'.$row['name'].'</a><br />';
    }

}

?>
</div>
于 2013-10-15T05:34:49.967 回答