【发布时间】:2015-09-21 19:43:36
【问题描述】:
我在下面有一个搜索表单,它有两种选择输入类型和一个文本输入字段,用户可以在其中按关键字搜索。出于某种原因,每当我单击关键字文本框时,焦点立即更改回类别的第一个下拉选择框,因此我无法在关键字文本框中输入任何内容。谁能明白为什么会这样?
$categories_list = array();
$ratings_list = array();
try {
$query = $dbh->query("SELECT category, genre, rating FROM posts WHERE 1
GROUP BY category, genre, rating");
$query->setFetchMode(PDO::FETCH_ASSOC);
$iterator = new IteratorIterator($query);
foreach ($iterator as $row) {
if (empty($row['category']) == false && !in_array($row['category'],
$categories_list))
$categories_list[] = $row['category'];
if (empty($row['rating']) == false && !in_array($row['rating'],
$ratings_list))
$ratings_list[] = $row['rating'];
}
} catch (Exception $e) {
echo '<p>', $e->getMessage(), '</p>';
}
?>
<p> </p>
<p> </p>
<h2>Search Completed Stories</h2>
<form name="search" method="get"
action="http://example.com/searchB/">
<label>
Category:
<select name="category">
<?php foreach($categories_list as $category) : ?>
<option><?php echo $category; ?></option>
<?php endforeach; ?>
</select>
</label>
<label>
Rating:
<select name="rating">
<option value="">Any</option>
<?php foreach($ratings_list as $rating) : ?>
<option><?php echo $rating; ?></option>
<?php endforeach; ?>
</select>
</label>
<label>
Keywords:
<input type="text" name="keywords">
</label>
<input type="hidden" name="active" value="0">
<input type="submit"/>
【问题讨论】:
-
更改焦点通常是由某种类型的 Javascript 引起的,但我在您的代码中看不到任何 JS。据我所知,PHP 无法在页面加载后重置焦点。
-
我想可能是这样。你是对的,我没有在页面上的任何地方使用任何 JS。
-
奇怪的是它在开发页面上运行良好。但是,当我将此代码放在具有另一个结果列表的另一个页面上时,我会遇到关键字输入文本框的焦点问题
-
好吧,上面的代码中没有任何内容会导致焦点发生变化。所以肯定有其他事情发生。您可以尝试提供其他代码,或者,如果没有其他选项,请提供运行此脚本的链接。如果我真的看到它发生,我可能会看到更多。
-
感谢您的提议,但它似乎是导致问题的 wordpress 模板。我在另一个 wordpress 模板上使用了完全相同的代码,效果很好。