При перезагрузке страницы откройте панель аккордеона - PullRequest
3 голосов
/ 05 октября 2010

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

 $.post('<%= ResolveUrl("~/Contract/AddContractLocation") %>', $(form).serialize(), function (data) {
         if (data.Result == "success") {
              ... yada yada... 
              window.location.reload();
         }

Изменить для добавления:

Вот как я инициализирую аккордеон:

$("#acc").accordion({
         autoHeight: false,
         navigation: true
});

Это базовая структура:

<fieldset>
    <legend>Contract</legend>

    <div id="acc">
        <h3><a href="#contractinfo">Contract Info</a></h3>
        <div>
            stuff
        </div>
        <h3><a href="#locationandrs">Locations and Ratesheets</a></h3>   
        <div>
            stuff
        </div>
        <h3><a href="#auditibleterms">Auditable Terms</a></h3>
        <div>
            stuff
        </div>
        <h3><a href="#contractdocs">Contract Docs</a></h3>
        <div>
            stuff
        </div>
    </div>
</fieldset>

Ответы [ 3 ]

3 голосов
/ 17 октября 2011

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

var substr = window.location.href.split('#'); 
window.location.href = substr[0] + "#locationandrs";
window.location.reload();
2 голосов
/ 05 октября 2010

Можете ли вы установить для параметра active значение true для возвращаемого значения? Вам нужно нажать на «опции» по ссылке, но вот документы:

Селектор для активного элемента. Задавать в false, чтобы не отображать ничего при запуске. Необходимо разборное: правда. Примеры кода

Инициализация аккордеона с активным указана опция.

$( ".selector" ).accordion({ active: 2 });

Получить или установить активную опцию после INIT.

//getter
var active = $( ".selector" ).accordion( "option", "active" );
//setter
$( ".selector" ).accordion( "option", "active", 2 );
0 голосов
/ 26 августа 2011

При отправке формы отправьте скрытый параметр, идентифицирующий открытую панель. Вы получаете этот параметр и с его помощью назначаете специальный идентификатор соответствующей панели во время вывода HTML-кода. Затем инициализировать аккордеон в js-script:

$('#accordion').accordion({ 
   ...
   ,active: '#panel_selected'
   ...
});
$('#panel_selected').get(0).scrollIntoView(false); // scroll until panel is visible

Вот и все!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...