获取文本框值而不是自动完成值javascript
我有一个带有jQuery自动完成功能的文本框。我需要的是:当我点击按钮Movies by this title时,我希望看到电影列表包含文本框中的术语,即使在auto completion中找不到该术语,而我只通过auto completion select查看电影列表 下图显示了我从自动完成列表中选择一部效果良好的电影的情况: 当我只写一些单词时就是这种情况,例如,如果用户忘记了全名或无法在自动完成列表中找到: 代码如下:获取文本框值而不是自动完成值javascript,javascript,php,jquery,autocomplete,Javascript,Php,Jquery,Autocomplete,我有一个带有jQuery自动完成功能的文本框。我需要的是:当我点击按钮Movies by this title时,我希望看到电影列表包含文本框中的术语,即使在auto completion中找不到该术语,而我只通过auto completion select查看电影列表 下图显示了我从自动完成列表中选择一部效果良好的电影的情况: 当我只写一些单词时就是这种情况,例如,如果用户忘记了全名或无法在自动完成列表中找到: 代码如下: <script type="text/javascript"&
<script type="text/javascript">
var selected;
$(document).ready(function () {
$("input[id='selectType']").change(function(){
if ($(this).val() == "byTitle") {
$("#m_scents2").hide();
$("#btnMove").show();
$("#m_scents").show();
$("#q").focus();
$("#q").autocomplete({
minLength: 0,
delay:5,
source: "filmsauto.php",
focus: function( event, ui ){
event.preventDefault();
return false;
},
select: function( event, ui ) {
window.selected = ui.item.value;
}
});
}
$('#btnMove').on('click', function (e) {
popupCenter("movieBytitle.php","_blank","400","400");
});
这是movieBytitle.php:
<script type="text/javascript">
var selected = parent.window.opener.selected;
$.ajax({
url: 'childfilm.php',
datatype: "json",
data:{p:selected},
success: function(response) {
$("#field").html(response);
}
});
</script>
这是childfilm.php:
if(isset($_GET['p']) && !empty($_GET['p'])){
include('imdbConnection.php');
$query = $conn->prepare("SELECT DISTINCT movieName, year, posterLink FROM film_info WHERE movieName LIKE :p");
$query->execute(array(':p' => '%'.$_GET['p'].'%'));
}
?>
<html>
<head>
....
</head>
<body>
<div class= "movielist">
<table id= "films">
<tr>
<th></th>
<th>year</th>
<th>Title</th>
</tr>
<?php while($row = $query->fetch(PDO::FETCH_ASSOC)): ?> //THIS IS LINE 53 WHERE THE ERROR IS SHOWN IN THE SECOND IMAGE
<tr>
<td><img class='imdbImage' id="image" src='imdbImage.php?url=<?php echo $row['posterLink']; ?>' alt="" /></td>
<td><label id='year'><?php echo $row['year']; ?> </label></td>
<td><a href="movie.php?title=<?php echo urlencode($row['movieName']); ?>"><?php echo $row['movieName']; ?></a></td>
</tr>
<?php endwhile; ?>
</table>
</div>
</body>
</html>
有人能告诉我如何获得文本框值而不是自动完成值吗
更新:最终解决方案
由于问题太长,最终的解决方案是在评论中实现的,我在这里更新了答案:感谢@lolka_bolka,这最终帮助了我:将p的值更改为->$'q'。val而不是传递所选的自动完成文本..: 编辑:
根据OP更新,我们在评论中进行了对话,请阅读
我认为,您的问题是,如果没有$\u GET[p],那么$query将不存在,因此您不能将其用作对象
<html>
<head>
....
</head>
<body>
<div class= "movielist">
<table id= "films">
<tr>
<th></th>
<th>year</th>
<th>Title</th>
</tr>
<?php
if (isset($_GET['p']) && !empty($_GET['p'])) {
include('imdbConnection.php');
$query = $conn->prepare("SELECT DISTINCT movieName, year, posterLink FROM film_info WHERE movieName LIKE :p");
$query->execute(array(':p' => '%' . $_GET['p'] . '%'));
if ($query->rowCount()) {
//If there are no $_GET["p"] then there wont be $query,
//So you can not fetch it!!!
while ($row = $query->fetch(PDO::FETCH_ASSOC)):
?>
<tr>
<td><img class='imdbImage' id="image" src='imdbImage.php?url=<?php echo $row['posterLink']; ?>' alt="" /></td>
<td><label id='year'><?php echo $row['year']; ?> </label></td>
<td><a href="movie.php?title=<?php echo urlencode($row['movieName']); ?>"><?php echo $row['movieName']; ?></a></td>
</tr>
<?php
endwhile;
} else {
echo '<td colspan="3">Sorry, there are no film like this</td>';
}
}
?>
</table>
</div>
</body>
</html>
我认为matix是matrix。不管怎么说,它是一个接缝,在你的变量不是一个对象,你想用什么作为对象。请给我们看一下您的儿童电影。是吗?虽然$row=$query->FETCPDO::FETCH_ASSOC:@lolka_bolka:matix不是我故意在中显示的矩阵,如果名称未处于自动完成状态,我不会得到任何电影列表。。e、 我可能只在文本框中键入,我希望看到所有电影都包含我知道这很愚蠢,但一般来说,我指的是在自动完成列表中找不到txtbox中的单词的情况。。。。关于你的第二个问题:是的,这是第53行,请看我的答案。如果没有$\u GET[p],您就没有$query,因此无法获取该对象,因为该对象不存在。:感谢您的帮助,但如果在自动完成中找不到文本框中的术语,我不想向用户显示该消息。。我在问题中问的是,如何获取文本框值,不管它是什么!我不在乎它是否不在自动完成列表中。。我需要的一个例子是IMDb或amazon的功能。。如果你在IMDB的搜索框中键入一个单词,即使你没有从自动完成列表中选择,也只需写下..,那么当你按下搜索按钮时,它将显示电影列表中包含的术语…我希望我能澄清我的问题:不,我完全不清楚,您试图实现的目标:如果您想要获取文本框文本,那么可以使用jQuery中的$'q'.text。如果您希望在发送表单后获得它,那么您可以通过$_POST[q]访问它,如果您的表单方法是POST,如果它是get,那么$_get[q];在PHP中。但是我想,你知道这些。好吧,我不想在我发送表单后得到它,我想在我点击这个标题的按钮后马上得到它。。我试着用$'q'.val;以前,但我没有尝试使用.text,因此我现在将执行此操作,并将通知您。。谢谢:算了吧,我错了。应该是。瓦尔,那应该行得通。嗯,他们中没有一个行得通。。我想我的主要问题是我不知道我必须在哪里写$'q'.val;