2016-08-25 61 views
1

我正在創建搜索表單,當用戶點擊搜索圖標時,我需要顯示文本框,一旦我輸入了內容,並再次點擊相同的搜索圖標,它需要顯示搜索結果。以下是我使用的代碼。jquery提交表單發生點擊事件

HTML &的Javascript

<div class="search_right"> 
<div class="search-top-container"> 
<div class="search-top"></div> 
<div class="search-form"> 
<div class="search-form-border"></div> 
<div class="search-top-title"><span class="icon"></span>Search</div> 
<form id="search_mini_form" action="%%GLOBAL_ShopPath%%/search.php" method="get"> 
<div class="form-search"> 
<input id="search" type="text" name="q" value="" class="input-text" style="display:none;" autocomplete="off"> 
    <button type="submit" title="Search" id="but" onclick="tog_input();" >  
    </button> 
    </div> 
    <div id="search_autocomplete" class="search-autocomplete" style="display: none;"></div> 
    <script type="text/javascript"> 
    function tog_input(){ 
    if(jQuery("#search").is(':visible')) 
    {   
    if(jQuery("#search").val()!=''){ jQuery("#search_mini_form").submit();  
    }else{ 
    jQuery("#search").animate({ width: 'hide' }); 
    } 
    } 
    else 
    { 
    jQuery("#search").animate({ width: 'show' }); 
    } 
    } 
    </script> 
    </form> 
    </div> 
    <div class="clear"></div> 
    </div> 

眼下的問題是,當我點擊搜索圖標,它顯示的搜索頁面,而不是文本,任何援助將不勝感激。

回答

2

更改內嵌代碼:

<button type="submit" title="Search" id="but" onclick="tog_input();">Submit</button> 

要:

<button type="submit" title="Search" id="but" onclick="tog_input(this, event);">Submit</button> 

避免這一行:

jQuery("#search_mini_form").submit(); 

預防僅在需要時才提交表單。

所以:

<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script> 
 

 
<div class="search_right"> 
 
    <div class="search-top-container"> 
 
     <div class="search-top"></div> 
 
     <div class="search-form"> 
 
      <div class="search-form-border"></div> 
 
      <div class="search-top-title"><span class="icon"></span>Search</div> 
 
      <form id="search_mini_form" action="%%GLOBAL_ShopPath%%/search.php" method="get"> 
 
       <div class="form-search"> 
 
        <input id="search" type="text" name="q" value="" class="input-text" style="display:none;" 
 
          autocomplete="off"> 
 
        <button type="submit" title="Search" id="but" onclick="tog_input(this, event);">Submit 
 
        </button> 
 
       </div> 
 
       <div id="search_autocomplete" class="search-autocomplete" style="display: none;"></div> 
 
       <script type="text/javascript"> 
 

 
        function tog_input(obj, e) { 
 

 
         if (jQuery("#search").is(':visible')) { 
 

 
          if (jQuery("#search").val() == '') { 
 

 
           jQuery("#search").animate({width: 'hide'}); 
 
           e.preventDefault(); 
 
          } 
 
         } 
 
         else { 
 

 
          e.preventDefault(); 
 

 
          jQuery("#search").animate({width: 'show'}); 
 
         } 
 
        } 
 
       </script> 
 
      </form> 
 
     </div> 
 
     <div class="clear"></div> 
 
    </div> 
 
</div>

+0

完美的一個。謝謝 –

0

我建議這是因爲您的按鈕類型是提交。如果將其更改爲按鈕類型=「按鈕」,那麼它應該可以工作,但您可能需要另一個按鈕才能提交表單。

+0

謝謝,我累了,它不工作。我提到了一個網站。 http://qdsociety.com/我試圖實現類似的功能。 –

0

您需要防止提交按鈕的默認行爲,否則它將在操作頁面中結束。爲了實現它,你需要做的是 -

function tog_input(e){ 
    e.preventDefault();// prevents default action 
    ... other code 
} 
+0

感謝您的代碼,當我使用preventdefault時,單擊操作不起作用。,我需要在第一次點擊按鈕時顯示文本框,然後我將輸入文本,然後再次點擊相同的按鈕。 –

+0

請檢查您的循環條件作爲默認提交行爲是阻止你現在可以有jquery/js函數。 'console.log()'你的條件/變量你會找到一種方法。 –