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) Не помогло. Помогите подружить эти два скрипта. уже второй день ничего немогу найти путного. :( |
Ну так надо смотреть что делает функция ModuleSearchAjax. Приведите нормальный HTML+JS а не эту PHP кашу.
|
она выводит количество найденных элементов (т.е. выбрав значение в селекте опрашивает БД и кол-ве результатов и выводит их в поисковую форму ну и далее формирует поисковых запрос)
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 ); ... и т.д. ... ?> |
слишком много кода. не нашел как вставить спойлер
|
подскажите в какую сторону копать?!
|
подсказали что можно сделать один обработчик для всех этих операций, чтобы 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> |
так не работает, незнаю как правильно задействовать 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> |
Часовой пояс GMT +3, время: 00:40. |