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, время: 09:13. |