Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.04.2014, 11:48
Интересующийся
Отправить личное сообщение для koyot777 Посмотреть профиль Найти все сообщения от koyot777
 
Регистрация: 09.04.2014
Сообщений: 13

onChange сбрасывает состояние слоя
Добрый день, помогите решить загвоздку с onChange.

Есть форма поиска на Ajax, Jquery. При выборе селекта с определенным значением, яваскрипт скрывает отображение определенного слоя.

<script type="text/javascript">
jQuery(document).ready(function(){

   jQuery("#prodam777").hide();		

   jQuery("select#cid").change(function (){
      if (jQuery(this).val() == "2") {
          jQuery("#prodam777").show();		  
      }
      else
      {
          jQuery("#prodam777").hide();		
      }	  
	  
   
	
   });   
});
</script>
<div id="prodam777">
ffff
</div>


так формируется select:
if($showSelectCategory)
			{

			$query = 'SELECT c.id,c.name ';
			if($useTranslations)
				{			
				$query .= ', CASE WHEN CHAR_LENGTH(t.t_value) THEN t.t_value ELSE c.name END as name ';
				$query .= 'FROM #__properties_category as c ';
				$query .= 'LEFT JOIN #__properties_translations as t ON t.t_fieldid = c.id AND t.t_table = "category" AND t.t_languagecode = "'.$thisLang.'" ';
				$query .= 'WHERE c.published = 1 ORDER BY c.name';				
				}else{
				$query .= 'FROM #__properties_category as c ';
				$query .= 'WHERE c.published = 1 ORDER BY c.name';
				}		
			
        	$db->setQuery($query);        
			$Categories = $db->loadObjectList();
			$citems 	= array();
			$citems[] 	= JHTML::_('select.option',  '0', JText::_( 'Категория' ) );
			foreach ( $Categories as $citem ) 
				{
				$citems[] = JHTML::_('select.option',  $citem->id, $citem->name );
				}
			$javascript = 'onChange="ModuleSearchAjax()"';		
			$ComboCategories = JHTML::_('select.genericlist',   $citems, 'cid', 'class="inner_search2"'. $javascript, 'value', 'text', $cid );	
			echo '<div class="bg-select"><div class="combo_vertical">'.$ComboCategories.'</div></div>' ;	
			echo '' ;
			
		}


Данный скрипт срабатывает на секунду, в момент выбора нужного значения и когда проходит обработка ModuleSearchAjax() опять скрывается.
Этот скрипт работает отлично, если убрать из селекта onChange="ModuleSearchAjax()".

Пробывал ставить рефреш:
setTimeout(function() {  
      jQuery('input, select').trigger('refresh');  
    }, 3)


Не помогло. Помогите подружить эти два скрипта. уже второй день ничего немогу найти путного.
Ответить с цитированием
  #2 (permalink)  
Старый 09.04.2014, 12:10
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Ну так надо смотреть что делает функция ModuleSearchAjax. Приведите нормальный HTML+JS а не эту PHP кашу.
Ответить с цитированием
  #3 (permalink)  
Старый 09.04.2014, 20:30
Интересующийся
Отправить личное сообщение для koyot777 Посмотреть профиль Найти все сообщения от koyot777
 
Регистрация: 09.04.2014
Сообщений: 13

она выводит количество найденных элементов (т.е. выбрав значение в селекте опрашивает БД и кол-ве результатов и выводит их в поисковую форму ну и далее формирует поисковых запрос)
function ModuleSearchAjax()
	{		
	JRequest::checkToken() or jexit( 'Invalid Token' );	
	require_once( JPATH_COMPONENT.DS.'helpers'.DS.'helper.php' );
	$language =& JFactory::getLanguage();
	$language->load('mod_prop_search_ajax', JPATH_SITE, $language->getTag(), true);
	jimport( 'joomla.application.component.helper' );
	jimport( 'joomla.application.module.helper' );
	$db 	=& JFactory::getDBO();
	$lang =& JFactory::getLanguage();
	$thisLang = $lang->getTag();
	$badchars = array('#','>','<','\\'); 
	
	$component = JComponentHelper::getComponent( 'com_properties' );
	$paramsC = new JParameter( $component->params );			
	$currencyformat		=	$paramsC->get('FormatPrice');
	$PositionPrice		=	$paramsC->get('PositionPrice');
	$SimbolPrice		=	$paramsC->get('SimbolPrice');
	$useTranslations	=	$paramsC->get('useTranslations','0');
	$Itemid = JRequest::getInt('Itemid');

	$moduleSearch = JModuleHelper::getModule( 'prop_search_ajax' );

		$params = new JParameter( $moduleSearch->params );

	$showSelectCountry 	=	$params->get( 'showSelectCountry' ) ;
	$idCountryDefault	=	$params->get( 'idCountryDefault' ) ;
	$showSelectState 	=	$params->get( 'showSelectState',1 ) ;
	$idStateDefault		=	$params->get( 'idStateDefault' ) ;
	$showSelectLocality =	$params->get( 'showSelectLocality',1 ) ;
	$idLocalityDefault	=	$params->get( 'idLocalityDefault' ) ;
	$showSelectCategory =	$params->get( 'showSelectCategory',1 ) ;
	$showSelectType 	=	$params->get( 'showSelectType',1 ) ;
	$showParentType   	=	$params->get( 'showParentType',0 );
...
и т.д.
...
?>

Последний раз редактировалось koyot777, 09.04.2014 в 20:33.
Ответить с цитированием
  #4 (permalink)  
Старый 09.04.2014, 20:31
Интересующийся
Отправить личное сообщение для koyot777 Посмотреть профиль Найти все сообщения от koyot777
 
Регистрация: 09.04.2014
Сообщений: 13

слишком много кода. не нашел как вставить спойлер
Ответить с цитированием
  #5 (permalink)  
Старый 11.04.2014, 09:10
Интересующийся
Отправить личное сообщение для koyot777 Посмотреть профиль Найти все сообщения от koyot777
 
Регистрация: 09.04.2014
Сообщений: 13

подскажите в какую сторону копать?!
Ответить с цитированием
  #6 (permalink)  
Старый 11.04.2014, 14:31
Интересующийся
Отправить личное сообщение для koyot777 Посмотреть профиль Найти все сообщения от koyot777
 
Регистрация: 09.04.2014
Сообщений: 13

подсказали что можно сделать один обработчик для всех этих операций, чтобы onChange="ModuleSearchAjax() выполняло свои функции и плюс запускал срипт по скрытию или отображению слоя
подскажите как мне сделать так чтобы скрипт срабатывал по ModuleSearchAjax()

<script type="text/javascript">
jQuery(document).ready(function(){

          jQuery("#prodam777").hide();		

   jQuery("select#cid").change(function (){
      if (jQuery(this).val() == "2") {
          jQuery("#prodam777").show();		  
      }
      else
      {
          jQuery("#prodam777").hide();		
      }	  

   });
   
 setTimeout(function() {  
      jQuery('input, select').trigger('refresh');  
    }, 3)   
   
});
</script>

<div id="prodam777">
ffff
</div>
Ответить с цитированием
  #7 (permalink)  
Старый 11.04.2014, 15:30
Интересующийся
Отправить личное сообщение для koyot777 Посмотреть профиль Найти все сообщения от koyot777
 
Регистрация: 09.04.2014
Сообщений: 13

так не работает, незнаю как правильно задействовать function ModuleSearchAjax()
<script type="text/javascript">

jQuery(document).ready(function(){
jQuery("#ooo").hide();		


  
  function ModuleSearchAjax(){

   jQuery("select#cid").change(function (){
   

  
      if (jQuery(this).val() == "2") {
          jQuery("#ooo").show();		  
      }
      else
      {
          jQuery("#ooo").hide();		
      }	  

   });
}
   
});

</script>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
onChange на несколько элементов и одновременное их изменение kayuga Dojo toolkit 0 13.03.2013 22:47
Неправильно работает перетаскивание слоя Enters Internet Explorer 2 16.06.2011 10:24
скрол мышкой картинки внутри слоя snk Элементы интерфейса 7 07.09.2010 18:22
Состояние загрузки, на основе фрейм nemo Общие вопросы Javascript 2 09.12.2009 13:23
Помогите новичку - onChange() не срабатывает serp Общие вопросы Javascript 2 01.08.2008 14:47