2013-02-04 45 views
0

我有这个javascript显示一个div,如果用户点击我的搜索表单中的文本区域。每个用户会话运行JavaScript oncer?

基本上在使用

<?php include(); ?> 

当用户在主页上,他们单击文本区域和DIV表演的那一刻搜索表单正在通过对主页拉,他们然后熄灭文区域(onblur)和div隐藏。这个函数只发生一次,不会再发生。

然而,一旦用户点击搜索并提交搜索功能,该功能再次启动,因此用户点击文本区域和div显示,它们脱落并隐藏。和以前一样,只发生一次。

我不希望div显示每次用户点击文本字段,我只希望他们看到这个div一次,无论他们在网站上的网页。

我已将javascript放入search.php文件中,该文件被拉低到主页上,并放到我网站上的其他所有页面上。

这可能是为什么该功能发生在每一个新页面上,但我希望用户能够从网站的任何位置访问搜索栏,以及他们是否在home.php开始搜索或profiles.php或任何其他页面,我希望div只显示给用户一次,而不是整个会话或cookie会话。

这是可能的,有人可以告诉我怎么样?只有

<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(); 
} 

?> 
+0

所以你想要的JS功能只能使用一次,如果我读这正确。 – Class

+0

听起来像一个会话cookie是你在找什么。 –

+0

创建一个会话布尔变量$ SESSION [“hasSearched”]将其设置为false,并且当他们执行搜索时将该变量设置为true。在包含弹出窗口的脚本之前检查布尔。不确定你是如何做搜索和包括脚本,但听起来像那会工作? –

回答

2

这并不理想,但我建议设置一个$_SESSION变量第一次用户点击该页面(或执行任何操作你:

感谢

<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> 

搜索脚本想要执行一次)。然后,在包含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; ?> 
+0

尝试这样做,但它保持div易裂变,并不会消失,当用户点击文本区域。它也可以从页面加载中看到,并且只能在用户单击文本区域时才可见。 –