Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

[Решено] Поиск по нажатию Enter


SlavkaWM
 Share

Recommended Posts

как сделать чтоб поиск работал по нажатию энтера а не обезательно было жать на картинку?

Так и есть по-умолчанию, проверьте, например, на демо сайте.

Если не так, то:

1) меняли код (поглядите на то, есть ли

<script type="text/javascript"><!--
$('#search input').keydown(function(e) {
	if (e.keyCode == 13) {
		moduleSearch();
	}
});

function moduleSearch() {
	url = 'index.php?route=product/search';
	
	var filter_keyword = $('#filter_keyword').attr('value')
	
	if (filter_keyword) {
		url += '&keyword=' + encodeURIComponent(filter_keyword);
	}
	
	var filter_category_id = $('#filter_category_id').attr('value');
	
	if (filter_category_id) {
		url += '&category_id=' + filter_category_id;
	}
	
	location = url;
}
//-->
2) отключены скрипты в браузере
Link to comment
Share on other sites


  • 4 months later...

Так и есть по-умолчанию, проверьте, например, на демо сайте.

Если не так, то:

1) меняли код (поглядите на то, есть ли

<script type="text/javascript"><!--
$('#search input').keydown(function(e) {
	if (e.keyCode == 13) {
		moduleSearch();
	}
});

function moduleSearch() {
	url = 'index.php?route=product/search';
	
	var filter_keyword = $('#filter_keyword').attr('value')
	
	if (filter_keyword) {
		url += '&keyword=' + encodeURIComponent(filter_keyword);
	}
	
	var filter_category_id = $('#filter_category_id').attr('value');
	
	if (filter_category_id) {
		url += '&category_id=' + filter_category_id;
	}
	
	location = url;
}
//-->
этот код в каком файле смотреть?
Link to comment
Share on other sites


этот код в каком файле смотреть?

Внизу Хедера.

Обратите внимание на вторую строчку скрипта, в ней написана id блока в котором находится поиск, думаю проблема в том, что у вас id блока не совпадает с id в скрипте.

Link to comment
Share on other sites


  • 3 months later...

Что то у меня не получается, вот кусок самого блока поиска:

<div class="block-search">
                       <div class="indent-search">
                        <fieldset class="form-search">
                          <?php if ($keyword) { ?>
                          <input type="text" value="<?php echo $keyword; ?>" id="filter_keyword" class="input-text" />
                          <?php } else { ?>
                          <input type="text" value="<?php echo $text_keyword; ?>" id="filter_keyword" onclick="this.value = '';" onkeydown="this.style.color = '000000'" style="color: #999;" class="input-text" />
                          <?php } ?>
                          <button class="button" type="submit" onclick="moduleSearch();"> </button>
                        </fieldset>
                       </div>
                        <p class="search-text"><?php echo $entry_search; ?></p>
                    </div>

А вот джава внизу:

<script type="text/javascript"><!--
$('block-search').keydown(function(e) {
	if (e.keyCode == 13) {
		moduleSearch();
	}
});

function moduleSearch() {
	url = 'index.php?route=product/search';
	
	var filter_keyword = $('#filter_keyword').attr('value')
	
	if (filter_keyword) {
		url += '&keyword=' + encodeURIComponent(filter_keyword);
	}
	
	var filter_category_id = $('#filter_category_id').attr('value');
	
	if (filter_category_id) {
		url += '&category_id=' + filter_category_id;
	}
	
	location = url;
}
//--></script>
<script type="text/javascript"><!--
$('.switcher').bind('click', function() {
	$(this).find('.option').slideToggle('fast');
});

так и не пойму почему не работает!

  • +1 2
Link to comment
Share on other sites


победил. Надо название блока в джаве написать уже filter_keybord:

//--></script>

<script type="text/javascript"><!--

$('#filter_keyword').keydown(function(e) {

if (e.keyCode == 13) {

moduleSearch();

}

});

function moduleSearch() {

url = 'index.php?route=product/search';

var filter_keyword = $('#filter_keyword').attr('value')

if (filter_keyword) {

url += '&keyword=' + encodeURIComponent(filter_keyword);

}

var filter_category_id = $('#filter_category_id').attr('value');

if (filter_category_id) {

url += '&category_id=' + filter_category_id;

}

location = url;

}

//--></script>

<script type="text/javascript"><!--

$('.switcher').bind('click', function() {

$(this).find('.option').slideToggle('fast');

});

//--></script>

  • +1 1
Link to comment
Share on other sites


победил. Надо название блока в джаве написать уже filter_keybord:

//--></script>

<script type="text/javascript"><!--

$('#filter_keyword').keydown(function(e) {

if (e.keyCode == 13) {

moduleSearch();

}

});

function moduleSearch() {

url = 'index.php?route=product/search';

var filter_keyword = $('#filter_keyword').attr('value')

if (filter_keyword) {

url += '&keyword=' + encodeURIComponent(filter_keyword);

}

var filter_category_id = $('#filter_category_id').attr('value');

if (filter_category_id) {

url += '&category_id=' + filter_category_id;

}

location = url;

}

//--></script>

<script type="text/javascript"><!--

$('.switcher').bind('click', function() {

$(this).find('.option').slideToggle('fast');

});

//--></script>

Превосходно! Огромное спасибо! А мне таки и не хватило мозга, как я этот блок только не колбасил.. Ещё раз спасибо!

Link to comment
Share on other sites


  • 1 year later...

тоже столкнулся, но ситуация иная

в стандартном шаблоне перенес блок поиска в другое место, из-за этого клавиша ентер перестала работать на поиске (который в шапке).

в файле common.js поправил в строке

$('#header input[name=\'filter_name\']').bind('keydown', function(e) {

на

$('#search input[name=\'filter_name\']').bind('keydown', function(e) {

все заработало

1.5.4.1

з.ы. в зависимости от того, куда кто этот блок перенес - нужно соответствующую корректировку и вносить, вроде как. мой случай не панацея, а скорее как пример.

  • +1 2
Link to comment
Share on other sites


  • 2 months later...

тоже столкнулся, но ситуация иная

в стандартном шаблоне перенес блок поиска в другое место, из-за этого клавиша ентер перестала работать на поиске (который в шапке).

в файле common.js поправил в строке

$('#header input[name=\'filter_name\']').bind('keydown', function(e) {

на

$('#search input[name=\'filter_name\']').bind('keydown', function(e) {

все заработало

1.5.4.1

з.ы. в зависимости от того, куда кто этот блок перенес - нужно соответствующую корректировку и вносить, вроде как. мой случай не панацея, а скорее как пример.

 

Спасибо, мне помог Ваш способ!

Link to comment
Share on other sites


  • 1 month later...

ocStore 1.5.5.1.1

В стороннем шаблоне тоже по интеру не работал.

В catalog/view/javascript/common.js заменил строку

$('#header input[name=\'search\']').bind('keydown', function(e) {

на

$('input[name=\'search\']').bind('keydown', function(e) {

  • +1 1
Link to comment
Share on other sites


  • 1 month later...

такая же проблема, только ничего из вышесказанного не помогло. шаблон стандартный. 1,5,5,1

ввожу запрос, жму энтер - ничего не происходит

Но плюс к тому если нажать мышкой на иконку поиска в шапке, перекидывает на станицу поиска, как будто был пустой запрос.

Link to comment
Share on other sites


  • 2 months later...

доброе время суток подскажите пж такая же проблема ввожу запрос, жму enter перекидывает на станицу поиска где нужно ввести обратно запрос

Link to comment
Share on other sites


  • 2 months later...
  • 1 month later...

Столкнулся с этой же проблемой. Нашел решение, помог код:

"<script type="text/javascript"><!--$('#search input').keydown(function(e) {
   if (e.keyCode == 13) {
      moduleSearch();
   }
});


function moduleSearch() {   
   pathArray = location.pathname.split( '/' );
   
   url = '<?php echo HTTP_SERVER; ?>';
      
   url += 'index.php?route=product/search';
      
   var filter_keyword = $('#filter_keyword').attr('value')
   
   if (filter_keyword) {
      url += '&keyword=' + encodeURIComponent(filter_keyword);
   }
   
   var filter_category_id = $('#filter_category_id').attr('value');
   
   if (filter_category_id) {
      url += '&category_id=' + filter_category_id;
   }
   
   location = url;
}
//--></script>"
Но проблема в том, что просто срабатывает редирект по нажатию на "ентер", но никакого поиска не случается, просто редиректит  на /index.php?route=product/search и всё. Помогите пожалуйста вылечить, горит :(
 
Чуть выше, код выглядит так:

<div id="menu-search">
   <div id="search">
    <?php if ($filter_name) { ?>
    <input type="text" name="filter_name" value="<?php echo $filter_name; ?>" />
    <?php } else { ?>
    <input type="text" name="filter_name" value="<?php echo $text_search; ?>" onclick="this.value = '';" onkeydown="this.style.color = '#000000';" />
    <?php } ?>
    <div class="button-search"></div>
  </div> 
Link to comment
Share on other sites


Спасибо! что-то произошло неведомое, в общем - теперь снова нажатие на enter не работает.
Поставил код вида: 

<script type="text/javascript"><!--
$('#search input').keydown(function(e) {
if (e.keyCode == 13) {
moduleSearch();
}
});
function moduleSearch() {
url = 'index.php?route=product/search';
var filter_keyword = $('#filter_keyword').attr('value')
if (filter_keyword) {
url += '&keyword=' + encodeURIComponent(filter_keyword) + '&description=true';
}
location = url;
}
//--></script>

Естественно с заменой строк 

 

 

var filter_keyword = $('#filter_keyword').attr('value')

var filter_keyword = $('input[name="filter_name"').attr('value')

 

Но эффекта не дало  :mellow: , всё та же пустая страница с 0 результатами 

Link to comment
Share on other sites


 

Попробуйте.

var filter_keyword = $('input[name="filter_name"').val();

Спасибо большое, но опять пустая строка поиска. Но уже ближе к правде, редирект ведёт на страницу типа:

/search&keyword=вводимоеслово&description=true

А надо:

/search&filter_name=вводимоеслово
Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.