Показать сообщение отдельно
  #1 (permalink)  
Старый 05.03.2020, 11:24
Новичок на форуме
Отправить личное сообщение для Oughtem Посмотреть профиль Найти все сообщения от Oughtem
 
Регистрация: 05.03.2020
Сообщений: 3

как добавить исключение в методе .on() для некоторых потомков выбранного селектора?
<div class="large-container" style="text-align:center;">
    <form action="<?php echo  Url::toRoute(['categories/index', 'alias'=>$mainCategory->alias,'mod'=>$params['mod']]) ?>" style="width:90%;" id="filterByParams" pjax-container>
        <div class="container-tab">
            <ul class="side-filter__list accordion-tabs">
                <?php if (!empty($productParams) OR (!empty($providers))): 
                $i = 0;
                $maxCount = SystemSetting::getMaxCountFiltersCats();

                foreach ($productParams as $pName => $param):?>
                <li class="tab-head-cont">
                  <a href="#" onclick="return false;" class="side-filter__item filter-param"><?= $pName;?></a>
                      <section>
                      <li class="side-filter__item">
                        <?php
                        asort($param['value']);
                        foreach ($param['value'] as $v) {
                            $seo_name = $seoProps->get($pName,$v);
                            $cheked =  (!empty($productParam) && in_array($seo_name,explode('_',$productParam))) ? true : false;
                            echo Html::input('checkbox', 'productParam[]', $seo_name, ['id' => 'productParam-'.$pName.'~'.$v, 'checked' => $cheked]);
                            echo Html::label(Html::tag('span', null).$v, 'productParam-'.$pName.'~'.$v);
                            $cheked = false;
                        }
                        ?>
                      </li>
                      </section>
                  <?php 
                    $i++;
                    if($i >= $maxCount) break;
                  ?>
                </li>
                <?php endforeach; ?>
                <?php endif; ?>

                <?php  if(!empty($providers)): ?>
                <li class="tab-head-cont">   
                    <a href="#" onclick="return false;"  class="side-filter__item filter-param"><?=mb_convert_case(yii::t('app','providers'), MB_CASE_TITLE, "UTF-8");?></a>
                    <section>
                        <li class="side-filter__item">
                        <?php 
                        foreach ($providers as $provider) {
                            $chek = (in_array($provider->id, $provIds)) ? true : false;
                            echo Html::input('checkbox', 'provider[]', $provider->id, ['id' => 'provider-'.$provider->id, 'checked' => $chek]);
                            echo Html::label(Html::tag('span', null).$provider->providerProfile->name_company, 'provider-'.$provider->id);
                            $chek = false;
                        }; 
                        ?>
                        </li>
                    </section>
                </li>  
                <?php endif; ?>
                <?php if (!$session->isActive){
                    $session = Yii::$app->session;
                    $session->open();
                } 
                $sortProducts = new SortProducts();
                ?>
                <select class="prod-head__select" onchange="window.location.href='/catalog-sort?type=' + this.value">
                    <?php foreach ($sortProducts->getTypes() as $type => $options) {?>
                        <option <?php if ($sortProducts->isActive($type)) echo 'selected' ?> value="<?= $type ?>"><?= $options['title'] ?></option>
                    <?php } ?>
                </select>

            </ul>
        </div>
    </form>
</div>

и скрипт
$(document).on('submit', 'form[pjax-container]', function(event) {
    /*$.pjax.defaults = {
        scrollTo: false,
    };
    $.pjax.submit(event, '#pjax-container')*/
    event.preventDefault();
    if($(this).serialize() == ''){
        location.href = THIS_URL;
    }else{
        var filterurl = $(this).serialize();
        if(filterurl.split('productParam%5B%5D=').length>1){
            filterurl = filterurl.split('productParam%5B%5D=');
            filterurl = filterurl.join('_');
        }
        if(filterurl.split('provider%5B%5D=').length>1){
            filterurl = filterurl.split('provider%5B%5D=');
            for (var i = 1; i<filterurl.length; i++){
                 filterurl[i] = 'provider-'+filterurl[i]
            }  
            filterurl = filterurl.join('_');
        }     
        location.href= THIS_URL+'/filter/'+filterurl.substring(1).replace(/&/g,'');
    }

скрипт корректирует урлы на которые посылаются запросы из формы. Это действие мне необходимо сохранить для элементов, находящихся в <li>...</li>. После <li> у меня идёт блок
<?php if (!$session->isActive){
    $session = Yii::$app->session;
    $session->open();
    } 
    $sortProducts = new SortProducts();
?>
<select class="prod-head__select" onchange="window.location.href='/catalog-sort?type=' + this.value">
    <?php foreach ($sortProducts->getTypes() as $type => $options) {?>
         <option <?php if ($sortProducts->isActive($type)) echo 'selected' ?> value="<?= $type ?>"><?= $options['title'] ?></option>
    <?php } ?>
</select>

к которому не надо применять действие скрипта. В этом блоке при событии onchange мне надо изменить переменную в сессии, закинув её по адресу
"/catalog-sort?type=' + this.value"
. Но это не получается сделать, т.к. вышеприведенный скрипт почему-то влияет на
onchange="window.location.href='/catalog-sort?type=' + this.value"
. Как в этой строке
$(document).on('submit', 'form[pjax-container]', function(event) {
исключить блок <select>...</select>?
Ответить с цитированием