0

ユーザーが検索フォームのテキスト領域をクリックすると、div を表示するこの JavaScript があります。

基本的に、検索フォームがホームページにプルされている瞬間に

<?php include(); ?>

ユーザーがホームページにいるときに、テキスト領域をクリックすると div が表示され、テキスト領域から外れて (onblur)、div が非表示になります。この関数は一度だけ発生し、二度と発生しません。

ただし、ユーザーが検索を押して検索が送信されると、関数が再び開始されるため、ユーザーがテキスト領域をクリックすると div が表示され、そこから外れて非表示になります。以前と同じように、これは 1 回だけ発生します。

ユーザーがテキスト フィールドをクリックするたびに div を表示したくありません。サイトのどのページにいても、この div を 1 回だけ表示したいのです。

私は javascript を search.php ファイルに入れました。このファイルは、ホームページと私のサイトの他のすべてのページに引っ張られます。

これがおそらく、関数が移動するすべての新しいページで機能が発生する理由ですが、ユーザーがサイトのどこからでも検索バーにアクセスできるようにしたいのですが、home.php または profile.php または他のページでは、div をユーザーに 1 回だけ表示し、セッション全体または Cookie セッションでは再度表示したくありません。

これは可能ですか、誰かが私に方法を教えてもらえますか?

ありがとう

<script>

        $(function() {
            $(".search_prompt").hide();
            var focusin_flag = false,
                focusout_flag = false;
            $("#text").focusin(function() {
                if (!focusin_flag) {
                    $(".search_prompt").show();
                    focusin_flag = true;
                }
            }).focusout(function () {
                if (!focusout_flag ) {
                    $(".search_prompt").hide();
                    focusout_flag = true;
                } 
                function timeout_init() {
        setTimeout('search_prompt()', 2000);

                }
            });
        });
    </script>

検索スクリプト:

<form method="get" action="">
    <input type="hidden" name="dosearch" value="1">
    <input type="text" id="text" name="query" class="searchbox" placeholder="Search Name/Location" style="width:120px;"/>
    <input type="image" src="../PTB1/assets/img/icons/search.png" height="19" width="20" class="searchbutton" name="submit" value="Start Search" />
</form>

<?php
//PHP CODE STARTS HERE

if(isset($_GET['dosearch'])){

// Change the fields below as per the requirements
$db_host="localhost";
$db_username="root";
$db_password="";
$db_name="";
$db_tb_atr_name="display_name";

//Now we are going to write a script that will do search task
// leave the below fields as it is except while loop, which will display results on screen

mysql_connect("$db_host","$db_username","$db_password");
mysql_select_db("$db_name");

$query=mysql_real_escape_string($_GET['query']);


$query_for_result=mysql_query("SELECT *,MATCH(display_name, location, sex, ethnicity, hobbies, station, age, weight_st, weight_lb, height_ft, height_in, build) AGAINST ('$query' IN BOOLEAN MODE) AS relevance FROM ptb_stats WHERE MATCH(display_name, location, sex, ethnicity, hobbies, station, age, weight_st, weight_lb, height_ft, height_in, build) AGAINST('$query' IN BOOLEAN MODE) ORDER BY relevance DESC LIMIT 5");
echo "<div class=\"search-results\">";
while($data_fetch=mysql_fetch_array($query_for_result))

{

    echo "<div class=\"text\"><a href=\"profile.php?id={$data_fetch['user_id']}\" class=\"search\">";
    echo "<div class=\"spacing\"><img width=35px height= 30px src=\"data/photos/{$data_fetch['user_id']}/_default.jpg\" class=\"boxgridsearch\"/> "; 
     echo substr($data_fetch[$db_tb_atr_name], 0,160);
    echo "</a></div></div>";

}
echo "<div class=\"morebutton-search\"><a href=\"search_results.php?query=$query\" \">+ view more results</a></div>";




mysql_close();
}

?>
4

1 に答える 1

2

理想的ではありませんが$_SESSION、ユーザーが最初にそのページにアクセスしたとき (または一度だけ実行したいアクションを実行したとき) に変数を設定することをお勧めします。次に、JavaScript を組み込む前に、そのセッション変数が設定されているかどうかを確認します。その場合は、JavaScript を含めないでください。そうでない場合は、含めます。

次のようになります。

// User just performed action for the first time.
$_SESSION['saw_div'] = true;

じゃあ後で :

<?php if (!isset($_SESSION['saw_div']) || $_SESSION['saw_div'] == false): ?>
    <script>
        // Include your JS script
    </script>
<?php endif; ?>
于 2013-02-04T20:02:28.477 に答える