My Project
My Project

Reputation: 37

Jquery submit form having issue on click event

I am creating search form, when user click search icon, i need to show textbox, once i entered content, and again clicked same search icon, it needs to display search results. Below is the code i used.

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>

Right now issue is, when i clicked search icon, it showing search page instead of textbox, any assistance would be appreciated.

Upvotes: 1

Views: 70

Answers (3)

gaetanoM
gaetanoM

Reputation: 42044

Change the inline code from:

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

To:

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

Avoid this line:

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

Prevent the form submission only when needed.

So:

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

Upvotes: 2

The_ehT
The_ehT

Reputation: 1230

You need to prevent default behaviour of submit button else it will end up in action page. To achieve it you need to do as -

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

Upvotes: 0

Kristian82
Kristian82

Reputation: 1557

I'd suggest that it is because your button type is submit. If you change it to button type = "button" then it should work, although you may need another button to submit your form.

Upvotes: 0

Related Questions